我正在为某个网站编写Greasemonkey脚本,该脚本有时会进行修改location.href。
location.href
在页面上进行更改时,如何获取事件(通过window.addEventListener或类似方式)window.location.href?我还需要访问指向新的/修改的URL的文档的DOM。
window.addEventListener
window.location.href
我看到了其他涉及超时和轮询的解决方案,但如果可能的话,我想避免这种情况。
popstate事件:
当活动历史记录条目更改时,将触发popstate事件。[…]popstate事件仅通过执行浏览器操作(例如单击“后退”按钮(或在JavaScript中调用history.back()))来触发
因此,在使用时侦听popstate事件并发送popstate事件history.pushState()应该足以对href更改采取措施:
popstate
history.pushState()
href
window.addEventListener('popstate', listener); const pushUrl = (href) => { history.pushState({}, '', href); window.dispatchEvent(new Event('popstate')); };