在Firefox插件中更改选项卡历史记录之前运行一些内容

时间:2015-06-24 03:14:41

标签: javascript firefox firefox-addon firefox-addon-sdk

我想在我的Firefox插件的标签window中附加一段代码,因此它会在标签历史记录中发生更改之前运行 - 例如,用户点击后退或前进按钮,用户点击指向新页面的链接...

是否有相关的高/低级API来执行此操作?

我最初的想法是将代码附加到window.onbeforeunload,但这不适用于使用window.history.pushState()的网站,并且在用户手动点击后退/前进按钮时不会运行。< / p>

1 个答案:

答案 0 :(得分:0)

您可以尝试使用pagehidepageshow事件来推送状态和卸载。 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