如何拦截window.location更改

epi*_*tka 33 javascript jquery

我需要一种方法将一些预处理附加到window.location的每个赋值.有没有办法做到这一点.我基本上需要序列化一些将在新位置使用的信息.

小智 26

您可以使用该beforeunload事件触发您的代码在导航之前运行...如果您需要更具体的内容(例如,只在代码中启动导航),那么我建议您将代码更改window.location为单独的函数,并添加自定义逻辑的钩子.

  • @CarlG,在单页应用程序中,如果 url 哈希已更改,您可以使用 `onhashchange` 来注册处理程序。 (2认同)

Rus*_*Cam 13

你可能想看看Ben Nadel关于这样做的帖子,它可能正是你正在寻找的

使用jQuery将事件绑定到非DOM对象

他在关于创建一个事件处理程序触发change事件时,后会谈例如window.location改变

  • 实际上,解决方案似乎是`setInterval`并定期检查. (11认同)
  • 虽然此链接可能会回答这个问题,但最好在此处包含答案的基本部分并提供参考链接.如果链接的页面发生更改,则仅链接的答案可能会无效. - [来自评论](/ review/low-quality-posts/21858132) (3认同)