我正在编写一个Firefox附加组件,我需要能够在加载所有选项卡后运行一些代码。
我尝试过类似的事情:
window.addEventListener("load", function(e) {
gBrowser.addEventListener("load", function(ee) {
// code to run after all tabs have loaded
// thank user for installing my add-on
alert('Thank you for installing my add-on');
// add tab to my website
gBrowser.selectedTab = gBrowser.addTab("http://www.mywebsite.com/");
}, true);
}, false);
但这不起作用,因为这将在加载后运行每个选项卡的代码。我想等到所有标签都加载完毕。我想在用户安装我的附加组件后重新启动Firefox时打印一条警告消息。我还想在我的网站上添加一个新标签。
我该怎么做?
答案 0 :(得分:3)
我想你的意思是等到浏览器启动时恢复会话。发出sessionstore-windows-restored
通知,您可以通过观察服务收听。像这样:
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
var observer =
{
QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIObserver]),
observe: function(subject, topic, data)
{
observerService.removeObserver(observer, "sessionstore-windows-restored");
addTabNow();
}
};
var observerService = Components.classes["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService);
observerService.addObserver(observer, "sessionstore-windows-restored", false);