szn*_*cki 12 javascript firefox jquery opera google-chrome
我做了一个简单的函数,使所有容器的行为像链接("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'});
}
);
}
Run Code Online (Sandbox Code Playgroud)
功能很棒.用户可以单击容器上的任何位置并正确重定向,而不是单击"更多"按钮.
但是,如果用户在重定向后点击后退按钮,则浏览器会返回两步而不是一步.更奇怪的是,历史看起来还不错.
简单方案以更好地描述:
第1页 - >第2页
Page2 [用户点击"allHot"容器] - > allHot重定向到Page3
Page3 [用户点击浏览器后退按钮] - > Page1
这是我正在努力的网站的主要错误.我真的没有预防它的线索.在Firefox,Chrome和Opera上测试了Bug.
也测试了Opera"没有javascript模式".如果禁用了javascript,则不会发生问题.
提前感谢任何线索或解决方案.
Mar*_*coK 35
而不是使用replace,使用以下内容:
window.location.href = ''
Run Code Online (Sandbox Code Playgroud)
添加到 MarcoK 的答案中。
使用时,replace您正在替换历史状态,因此您不会再将一个状态推送到历史中。
如果您有以下情况:
Page1 到 State1
Page2 到 State2
然后你使用 replace 你将替换Page3为State2。
当您按下后退按钮你会去从State2到State1,这就是为什么你要Page1。
使用时,window.location.href您Page3将再添加一个状态,因此将设置为State3,当您单击后退按钮时,您将转到State2具有Page2URL 的位置。