如何检测不触发onpopstate的pushState / replaceState

时间:2015-12-11 13:03:32

标签: javascript google-chrome google-chrome-extension

关于popstate,documentation说明了这一点:

  

请注意,只需调用history.pushState()或history.replaceState()   不会触发popstate事件。仅触发popstate事件   通过执行浏览器操作,例如单击后退按钮(或   在JavaScript中调用history.back()。

例如,在youtube上,如果您导航到另一个视频,则会更改网址,但如何检测到该更改,因为它不是由浏览器操作触发的?

我想在内容脚本中执行此操作,但如果不可能,我可以在后台执行此操作。

PS:Youtube只是最简单的例子,因此youtube特定的解决方案或依赖于youtube维护html中某些id的解决方案并不是我想要的。

1 个答案:

答案 0 :(得分:0)

您可以使用webNavigation API并在后台收听onHistoryStateUpdated事件。

e.g:

chrome.webNavigation.onHistoryStateUpdated.addListener(function () {
  // do something here
})