gpt4 book ai didi

javascript - 检测 URL 更改(无窗口卸载)

转载 作者:数据小太阳 更新时间:2023-10-29 06:12:03 25 4
gpt4 key购买 nike

我想为“URL 更改之前”事件添加一个监听器,以访问旧 URL。 window.onbeforeunload 如果页面没有重新加载(AJAX 驱动的页面),则不会触发。

这发生在 YouTube 视频页面上,例如,当您点击右侧导航栏中的另一个视频时。

我已阅读 this post ,它轮询 window.location。但这不会捕获旧的 URL。

这是一个 Chrome 扩展。我正在寻找一种在 JavaScript 中更改 URL 之前进行检测的方法。

最佳答案

对于使用history API的AJAX驱动的页面(大部分,包括YouTube),可以拼接成history.pushState

对于 Chrome,旧 url 将位于 spf-referer 属性中。 (此外,在 pushState 触发时,location.href 仍将设置为旧 URL。)

所以这样的代码可以工作:

var H               = window.history;
var oldPushState = H.pushState;
H.pushState = function (state) {
if (typeof H.onpushstate == "function") {
H.onpushstate ({state: state} );
}
return oldPushState.apply (H, arguments);
}
window.onpopstate = history.onpushstate = function (evt) {
console.log ("Old URL: ", evt.state["spf-referer"]);
}

注意,因为需要覆盖目标页面的pushState函数,所以必须inject此代码来自您的内容脚本。

关于javascript - 检测 URL 更改(无窗口卸载),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18424417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com