我制作了一个简单的函数,它使所有容器的行为像链接(“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'});
}
);
}
功能很棒。用户可以点击容器上的任何地方而不是单击“更多”按钮,而是正确地重定向。
但是,如果用户在重定向后点击后退按钮,则浏览器会返回两步而不是一步。更奇怪的是,历史看起来还不错。
更好描述的简单方案:
Page1 - >第2页
Page2 [用户点击“allHot”容器] - > allHot重定向到Page3
Page3 [用户点击浏览器后退按钮] - >第1页
这是我正在处理的网站的主要错误。我真的没有预防它的线索。在Firefox,Chrome和Opera上测试了Bug。
也在Opera“没有javascript模式”上测试过。如果javascript被禁用,则不会发生问题。
提前感谢任何线索或解决方案。
答案 0 :(得分:33)
不使用replace
,而是使用以下内容:
window.location.href = ''
答案 1 :(得分:3)
添加到MarcoK的答案。
使用replace
时,您正在替换历史状态,因此您不会再将状态推送到历史记录中。
如果您有以下内容:
Page1
至State1
Page2
至State2
然后您使用替换,您将Page3
替换为State2
。
当您按后退按钮时,您将从State2
转到State1
,这就是您前往Page1
的原因。
使用window.location.href
时,您要再添加一个状态,以便Page3
设置为State3
,当您点击后退按钮时,您将转到State2
{1}}作为网址。