window.location.replace(href)后面的后退按钮失败;
我做了一个简单的函数,使所有容器的行为像链接(“a”元素)。
function allHot(element){ $(element) .click( function(){ var href = $(this).find('a').attr('href'); window.location.replace(href); }) .hover( function(){ $(this).css({'text-shadow' : '0px 1px 0px #D6D6D6'}); }, function(){ $(this).css({'text-shadow' : 'none'}); } ); }
function很棒。 用户可以单击容器上的任何位置并正确地重定向,而不是单击“更多”按钮。
但是,如果用户在重定向后点击后退按钮,则浏览器会返回两步而不是一步。 更奇怪的是,历史看起来还不错。
简单方案以更好地描述:
第1页 – >第2页
Page2 [用户点击“allHot”容器] – > allHot重定向到Page3
Page3 [用户点击浏览器后退按钮] – > Page1
这是我正在努力的网站的主要错误。 我真的没有预防它的线索。 在Firefox,Chrome和Opera上测试了Bug。
还测试了Opera“没有javascript模式”。 如果禁用了javascript,则不会发生问题。
提前感谢任何线索或解决方案。
而不是使用replace
,请使用以下内容:
window.location.href = ''
添加到MarcoK的答案。
使用replace
您将替换历史状态,因此您不会再将状态推送到历史记录中。
如果您有以下内容:
Page1
到Page1
Page2
到第Page2
然后你使用替换你将把Page3
替换为State2
。
当您按下后退按钮时,您将从State2
转到State1
,这就是您要去Page1
。
使用window.location.href
您将再添加一个状态,因此Page3
将设置为State3
,当您单击后退按钮时,您将转到具有Page2
作为URL的State2
。