首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检测URL更改(不卸载窗口)

检测URL更改(不卸载窗口)
EN

Stack Overflow用户
提问于 2013-08-25 08:10:19
回答 2查看 4.6K关注 0票数 5

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

例如,当你点击右导航栏中的另一个视频时,YouTube视频页面就会发生这种情况。

我读过调查window.locationthis post。但这并不能捕获旧的URL。

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

EN

回答 2

Stack Overflow用户

发布于 2013-09-23 09:45:56

对于使用history API的AJAX驱动的页面(大多数页面,包括YouTube),可以拼接到history.pushState中。

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

所以像这样的代码将会起作用:

代码语言:javascript
运行
复制
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此代码。

票数 4
EN

Stack Overflow用户

发布于 2013-08-25 10:09:12

如果你正在编写一个Chrome扩展,你可以监听onUpdated事件,该事件会在标签url改变时触发。更多信息在这里https://developer.chrome.com/extensions/tabs.html#event-onUpdated

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18424417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档