我想在“更改URL之前”事件中添加一个监听器,该监听器可以访问旧的URL。如果页面不重新加载(AJAX驱动的页面),则不会触发window.onbeforeunload
。
例如,当你点击右导航栏中的另一个视频时,YouTube视频页面就会发生这种情况。
我读过调查window.location
的this post。但这并不能捕获旧的URL。
这是一个Chrome扩展。我正在寻找一种在javascript中URL更改之前进行检测的方法。
发布于 2013-09-23 09:45:56
对于使用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此代码。
发布于 2013-08-25 10:09:12
如果你正在编写一个Chrome扩展,你可以监听onUpdated
事件,该事件会在标签url改变时触发。更多信息在这里https://developer.chrome.com/extensions/tabs.html#event-onUpdated。
https://stackoverflow.com/questions/18424417
复制相似问题