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您将替换历史状态,因此您不会再将状态推送到历史记录中。

如果您有以下内容:

Page1Page1

Page2到第Page2

然后你使用替换你将把Page3替换为State2

当您按下后退按钮时,您将从State2转到State1 ,这就是您要去Page1

使用window.location.href您将再添加一个状态,因此Page3将设置为State3 ,当您单击后退按钮时,您将转到具有Page2作为URL的State2