繁体   English   中英

页面加载时弹出状态

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM