window.onpopstate不工作;当我导航回页面时没有任何反应

时间:2015-04-07 20:15:39

标签: javascript window history pop popstate

我正在尝试在我网站上的其中一个页面上添加window.onpopstate,但一切都没有发生。我把这个脚本放在页面上:

<script type="text/javascript">
    window.addEventListener('popstate', function(event) {
        if (event.state) {
            alert(event.state);
        }
    }, false);
</script>

我也尝试过:

window.onpopstate = function() {
    alert("popped!");
}

但是当我导航回页面时,我没有收到任何警报。

1 个答案:

答案 0 :(得分:14)

只有当您添加一个或多个历史记录条目/条目,然后用户点击浏览器中的后退按钮时,您才会收到popstate个事件。

在浏览器历史记录中添加条目可让您更改URL(就像用户导航到另一个页面一样),但不会实际加载新页面。

使用pushState方法添加历史记录条目:

history.pushState({}, '', '/newpage');

当您添加一个条目并且用户单击返回时,URL会切换回上一个条目,但不会加载该地址的页面。而是触发popstate事件。

请参阅https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history


<强>例外:

较旧的浏览器不支持popstate事件并操纵浏览器的历史记录。

某些浏览器(例如Safari)在实际加载页面时也会触发popstate事件。