Javascript 如何确定所有选项卡都已加载到Firefox中?
我正在编写一个Firefox插件,我需要能够在加载所有选项卡后运行一些代码 我试过这样的方法:Javascript 如何确定所有选项卡都已加载到Firefox中?,javascript,tabs,firefox-addon,loading,dom-events,Javascript,Tabs,Firefox Addon,Loading,Dom Events,我正在编写一个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
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时打印一条警告消息。我还想在我的网站上添加一个新标签
怎么做?我想您的意思是等到浏览器启动时会话恢复。发送了一个
sessionstore windows restored
通知,您可以通过observer服务收听该通知。大概是这样的:
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);
我猜您的意思是等到浏览器启动时会话恢复。发送了一个
sessionstore windows restored
通知,您可以通过observer服务收听该通知。大概是这样的:
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);
如果Firefox正在加载具有相同url的选项卡,我不想添加该选项卡。相反,我只想选择它。这也是我希望能够检测到所有标签何时都已加载的部分原因。如果Firefox正在加载具有相同url的标签,我不想添加标签。相反,我只想选择它。这就是我希望能够检测到所有选项卡何时都已加载的部分原因。实际上,它不起作用,因为选项卡尚未加载,我需要知道每个选项卡的uri。你知道这在什么情况下有效吗@威尔:选项卡将被还原-URL应该可以通过
gBrowser.browsers
集合中每个浏览器的currentURI.spec
属性访问。如果没有,您将不得不添加侦听器以等待每个选项卡加载。感谢您的帮助Wladimir!实际上,它不起作用,因为选项卡还没有加载,我需要知道每个选项卡的uri。你知道这在什么情况下有效吗@威尔:选项卡将被还原-URL应该可以通过gBrowser.browsers
集合中每个浏览器的currentURI.spec
属性访问。如果没有,您将不得不添加侦听器以等待每个选项卡加载。感谢您的帮助Wladimir!