[英]popstate fire on page load
$(window).on('popstate', function(){
window.history.go(-1);
});
当用户单击“后退”按钮时,我有一个页面使用popstate
但在某些浏览器中,popstate在页面加载时触发,而不是单击后退按钮。
它发生在Safari和触摸设备中。
最简单的破解/解决方案是在初始页面加载后立即在setTimeout中添加popstate侦听器。
setTimeout( function() {
window.addEventListener( 'popstate', myPopStateHandler, false );
}, 500 );
我很讨厌为解决问题而抛出setTimeout,总是看起来像是在纠结。 但是现在,嘿,它有效。
添加一个标志来检测页面加载对我来说已经解决了。
编辑:添加了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
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.