我想在我的Firefox插件的标签window
中附加一段代码,因此它会在标签历史记录中发生更改之前运行 - 例如,用户点击后退或前进按钮,用户点击指向新页面的链接...
是否有相关的高/低级API来执行此操作?
我最初的想法是将代码附加到window.onbeforeunload
,但这不适用于使用window.history.pushState()
的网站,并且在用户手动点击后退/前进按钮时不会运行。< / p>
答案 0 :(得分:0)
您可以尝试使用pagehide
和pageshow
事件来推送状态和卸载。 https://developer.mozilla.org/en-US/docs/Web/Events/pageshow
但有推送状态监听器我无法回想起它们或它在mdn上的位置,快速stackoverflow搜索“pushstate事件监听器”拉了这个:
$(window).bind('popstate', function(event){
console.log(event.data);
});
但那就是jquery所以可能不会工作但是如果你找到推/流听众请分享。
当然还有nsIWebProgressListener的上帝解决方案:https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgressListener?redirectlocale=en-US&redirectslug=nsIWebProgressListener#onStatusChange%28%29
但由于它有大量数据,这可能会变得混乱,但如果您了解它,那么它就是理想的解决方案。
编辑: 哦,这里是一个push / pop监听器:window.onpopstate:https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate
编辑: 我找到了过去做的这个小小的经验,对于第3个bool和不同的事件监听器有不同的价值,也许你可以在这里添加window.onpopstate并做一些测试并分享结果,这将是非常棒的。 https://github.com/Noitidart/event-listener-experiment-DOMC-and-load/blob/master/bootstrap.js