$(window).on('popstate', function(){
window.history.go(-1);
});
当用户点击后退按钮时,我有一个页面使用popstate
但在某些浏览器中,popstate会在页面加载时触发,而不是单击后退按钮。
它发生在Safari和触摸设备中。
答案 0 :(得分:1)
最简单的黑客/解决方案是在初始页面加载后立即在setTimeout中添加popstate侦听器。
setTimeout( function() {
window.addEventListener( 'popstate', myPopStateHandler, false );
}, 500 );
我厌倦了投入一个setTimeout来获得分辨率,似乎总是像一个kludge。但就目前而言,嘿它有效。
答案 1 :(得分:-1)
添加一个标志来检测页面加载为我解决了这个问题。
编辑:添加了Safari浏览器检测,否则首先点击后退按钮不会在Firefox或Chrome中触发popstate事件。
var isSafari = /^((?!chrome).)*safari/i.test(navigator.userAgent),
firstLoad = true;
$(window).on('popstate', function(){
if (isSafari && firstLoad) {
firstLoad = false;
return;
} else {
// run your popstate code
}
});