window.location.href更改时的事件

window.location.href更改时的事件

我正在为一个网站编写Greasemonkey脚本,该脚本在某些时候会修改location.href

如何在页面上进行更改window.addEventListener时获得事件(通过或类似的东西)window.location.href?我还需要访问指向新/修改的URL的文档的DOM。

我已经看到了其他涉及超时和轮询的解决方案,但我想尽可能避免这种情况。


达令说
浏览 3064回答 3
3回答

SMILET

popstate事件:当活动历史记录条目更改时,将触发popstate事件。[...] popstate事件只能通过执行浏览器操作来触发,例如单击后退按钮(或在JavaScript中调用history.back())因此,在使用时收听popstate事件并发送popstate事件history.pushState()应该足以对href变更采取行动:window.addEventListener('popstate', listener);const pushUrl = (href) => {   history.pushState({}, '', href);   window.dispatchEvent(new Event('popstate'));};

当年话下

您无法避免轮询,href更改没有任何事件。如果你不过分,使用间隔是相当轻的。如果你担心的话,每50ms左右检查一次href对性能没有任何重大影响。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript