Javascript onProgressChange不提供Firefox扩展中页面加载的完整进度

Javascript onProgressChange不提供Firefox扩展中页面加载的完整进度,javascript,firefox,firefox-addon,xul,Javascript,Firefox,Firefox Addon,Xul,我正在firefox扩展中使用tabsProgressListener的onProgressChange回调。 我使用这个回调来跟踪页面加载的进度,这样我就可以使用这些信息将我的contentscripts注入到页面中 但是,有时progressListener并不总是给出完成状态 我不能使用本文中提到的onPageLoad示例 因为我需要选项卡上的句柄来独立跟踪和加载脚本,即使在切换选项卡时也是如此 我不清楚为什么会发生这种情况。请帮忙 如果在onPageLoad中有任何其他方法可以做到这一点

我正在firefox扩展中使用tabsProgressListener的onProgressChange回调。 我使用这个回调来跟踪页面加载的进度,这样我就可以使用这些信息将我的contentscripts注入到页面中

但是,有时progressListener并不总是给出完成状态

我不能使用本文中提到的onPageLoad示例 因为我需要选项卡上的句柄来独立跟踪和加载脚本,即使在切换选项卡时也是如此

我不清楚为什么会发生这种情况。请帮忙

如果在onPageLoad中有任何其他方法可以做到这一点,我可以访问选项卡并独立跟踪脚本,甚至在切换选项卡时也可以将脚本注入到每个选项卡中

以下是我实现的代码片段:

var tabsProgressListener = {
    onProgressChange: function( aBrowser,
                                aWebProgress,
                                aRequest,
                                aCurSelfProgress,
                                aMaxSelfProgress,
                                aCurTotalProgress,
                                aMaxTotalProgress
                                ) {
        Components.utils.reportError("onProgressChange: " + aCurTotalProgress + "/" + aMaxTotalProgress);
        if(aCurTotalProgress === aMaxTotalProgress) {
            onPageLoad(aBrowser);
        }
    }
};

gBrowser.addTabsProgressListener(tabsProgressListener);

function onPageLoad(context) {
    var loader = Components.classes[ "@mozilla.org/moz/jssubscript-loader;1" ]
                            .getService( Components.interfaces.mozIJSSubScriptLoader );
        loader.loadSubScript("chrome://signonex/content/script1.js", context);
        loader.loadSubScript("chrome://signonex/content/script2.js", context);
        loader.loadSubScript("chrome://signonex/content/script3.js", context);
}

使用选项卡进度侦听器时,可以使用

我不太明白为什么不能使用
DOMContentLoaded
。。。有一些API可以将事件映射回
窗口
event.originalTarget.defaultView
)和/或
文档
event.originalTarget.ownerDocument


还有你的朋友和朋友。

谢谢。我能够使用onStateChange使其正常工作。:)