【问题标题】:Using onpopstate in an Chrome Extension for Facebook在 Facebook 的 Chrome 扩展中使用 onpopstate
【发布时间】:2012-10-28 21:56:19
【问题描述】:

我正在尝试为 facebook 创建一个 Chrome 插件,并且我正在使用 onpopstate 事件来检查用户何时转到另一个页面。唯一的问题是 onpopstate 没有触发。

这是我正在使用的(简单)代码:

window.onpopstate = function() { console.log('pop'); };

这是问题的屏幕:

如你所见,pushState 代码被调用,但 onpopstate 监听器没有被调用。

你知道这里发生了什么吗?

【问题讨论】:

  • 呃,啊,你能带我看看这个吗.. 'onpopstate' 的事件监听器将如何被调用以响应'push'?鉴于您已附上屏幕截图,我们可以排除您将代码复制到论坛时出现的错误。有没有可能你刚刚度过了一个wtf时刻?大致相当于在您的汽车中选择了前进档然后想知道为什么它没有倒档?
  • 你的意思是说这个的那位? "请注意,仅调用 history.pushState() 或 history.replaceState() 不会 触发 popstate 事件。popstate 事件仅通过执行浏览器操作(例如单击后退按钮(或在 JavaScript 中调用 history.back())。"
  • 这里非常安静。你错过了文件的那一部分吗?
  • 对不起,我一直离线,该死!我检查了该文件几乎三遍,但我总是读错:(对不起,我的错误!

标签: javascript facebook dom-events browser-history chrome-plugins


【解决方案1】:

@enhzflep 的答案在上面的 cmets 中,并不是很明显。来自MDN

调用 history.pushState() 或 history.replaceState() 不会触发 popstate 事件。 popstate 事件仅通过执行浏览器操作触发,例如在同一文档的两个历史记录条目之间导航时单击后退按钮(或在 JavaScript 中调用 history.back())。

换句话说,在这种情况下不应触发 onpopstate 事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2011-12-18
    • 2023-03-13
    • 2023-03-27
    • 1970-01-01
    • 2014-08-05
    相关资源
    最近更新 更多