为了账号安全,请及时绑定邮箱和手机立即绑定

window.location.href更改时的事件

window.location.href更改时的事件

达令说 2019-08-19 14:58:09
window.location.href更改时的事件我正在为一个网站编写Greasemonkey脚本,该脚本在某些时候会修改location.href。如何在页面上进行更改window.addEventListener时获得事件(通过或类似的东西)window.location.href?我还需要访问指向新/修改的URL的文档的DOM。我已经看到了其他涉及超时和轮询的解决方案,但我想尽可能避免这种情况。
查看完整描述

3 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

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'));};


查看完整回答
反对 回复 2019-08-19
?
当年话下

TA贡献1890条经验 获得超9个赞

您无法避免轮询,href更改没有任何事件。

如果你不过分,使用间隔是相当轻的。如果你担心的话,每50ms左右检查一次href对性能没有任何重大影响。


查看完整回答
反对 回复 2019-08-19
  • 3 回答
  • 0 关注
  • 3183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信