小编Iva*_*van的帖子

.onload从Firefox扩展中多次调用

我正在开发Firefox扩展并具有以下代码:

function initialize() { 
    // For accessing browser window from sidebar code.
    var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
               .getInterface(Components.interfaces.nsIWebNavigation)
               .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
               .rootTreeItem
               .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
               .getInterface(Components.interfaces.nsIDOMWindow);
    var gBrowser = mainWindow.gBrowser;
    gBrowser.onload = function() {
        alert('loaded');
    };
}
Run Code Online (Sandbox Code Playgroud)
  1. 当我打开扩展程序(侧边栏)并继续在Firefox窗口中打开一个新选项卡时,有三个警告框.
  2. 刷新页面时,有两个警告框.
  3. 页面完成加载后,只有一个警告框.
  4. 当我更改标签时,会触发警报.

我使用.onload而不是DOMContentLoaded或readystatechange,因为我需要等到所有其他javascript在我运行之前已经完成加载页面.

关于为什么触发多个事件的原因(以及不应该触发事件的事情)的任何想法?

根据MatrixFrog的建议,这是我遇到的解决方案:

function initialize() { 
    // For accessing browser window from sidebar code.
    var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
               .getInterface(Components.interfaces.nsIWebNavigation)
               .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
               .rootTreeItem
               .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
               .getInterface(Components.interfaces.nsIDOMWindow);
    var gBrowser = mainWindow.gBrowser;
    if (gBrowser.addEventListener) {
        gBrowser.addEventListener("load",pageLoaded,true);
    }    
}

function pageLoaded(aEvent) {
    if ((aEvent.originalTarget.nodeName == …
Run Code Online (Sandbox Code Playgroud)

javascript firefox-addon onload dom-events

9
推荐指数
1
解决办法
4698
查看次数

将屏幕截图功能添加到firefox扩展

是否有跨平台方法从firefox扩展中截取屏幕截图?

理想情况下,我希望能够截取dom元素的屏幕截图(无论它是否在页面上可见),例如:

var screenshot = screenshot(document.getElementById('example');

任何指针或建议都会很好,搜索https://developer.mozilla.org/只会产生他们在各种指南中使用的截图.

firefox screenshot firefox-addon

7
推荐指数
1
解决办法
2904
查看次数