我正在尝试为 facebook 创建一个 Chrome 插件,并且我正在使用 onpopstate 事件来检查用户何时进入另一个页面。唯一的问题是 onpopstate 不会触发。
这是我正在使用的(简单)代码:
window.onpopstate = function() { console.log('pop'); };
这是问题的屏幕:
如您所见,调用了 pushState 代码,但未调用 onpopstate 侦听器。
你知道这里发生了什么吗?
我正在尝试为 facebook 创建一个 Chrome 插件,并且我正在使用 onpopstate 事件来检查用户何时进入另一个页面。唯一的问题是 onpopstate 不会触发。
这是我正在使用的(简单)代码:
window.onpopstate = function() { console.log('pop'); };
这是问题的屏幕:
如您所见,调用了 pushState 代码,但未调用 onpopstate 侦听器。
你知道这里发生了什么吗?
@enhzflep 的答案在上面的评论中,并不是很明显。来自MDN:
调用 history.pushState() 或 history.replaceState() 不会触发 popstate 事件。popstate 事件仅通过执行浏览器操作触发,例如在同一文档的两个历史条目之间导航时单击后退按钮(或在 JavaScript 中调用 history.back())。
换句话说,在这种情况下不应触发 onpopstate 事件。