我正在尝试在我网站上的其中一个页面上添加window.onpopstate,但一切都没有发生。我把这个脚本放在页面上:
<script type="text/javascript">
window.addEventListener('popstate', function(event) {
if (event.state) {
alert(event.state);
}
}, false);
</script>
我也尝试过:
window.onpopstate = function() {
alert("popped!");
}
但是当我导航回页面时,我没有收到任何警报。
答案 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
事件。