绑定popstate事件无效

10

我试图将此代码输入到浏览器控制台中:

window.onpopstate = function() {alert(1);}

然后点击返回按钮,没有弹出任何警告。

我做错了什么吗?或者从控制台绑定popstate事件到页面不被允许?

使用Chrome 24和Firefox 18。

2个回答

20

在控制台中输入这个

window.onpopstate = function() {alert(1);}; history.pushState({}, '');

然后点击返回按钮。


1
你能解释一下为什么要添加history.pushState()部分吗? - James Koss
1
@Phuein history.pushState() 是将一个新的历史记录条目的URL推入堆栈。浏览器不在意这是否是一个有效的URL,也不会使用新URL重新加载页面。由于提供的新URL为空,地址栏中的URL不会更改,但当您单击返回按钮时,警报会触发。 - nikkumang

11

我更喜欢按照以下方式添加popstate监听器,以防止覆盖window.onpopstate中已有的内容:

window.addEventListener('popstate', function(){alert(1);});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接