如何拦截window.location变化

IT技术 javascript jquery
2021-02-20 20:04:52

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

2个回答

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

这适用于单页应用程序吗?在 Angular 和其他 SPA 框架中,URL 更改但页面不会卸载/重新加载,所以我想知道是否会触发此事件。
2021-04-16 20:04:52
通常框架提供自定义事件来获取位置更改
2021-04-23 20:04:52
@CarlG,在单页应用程序中,onhashchange如果 url 哈希已更改,您可以使用它来注册处理程序。
2021-04-26 20:04:52
我将用 window.location.href 附加 &Id。在卸载之前不会进入内部。有没有办法可以找到所有更改 url 的事件
2021-04-29 20:04:52

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

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

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

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会无效。-来自评论
2021-04-27 20:04:52
实际上,该解决方案似乎会setInterval定期检查。
2021-05-09 20:04:52