我在firefox扩展中使用了tabsProgressListener的onProgressChange回调。 我正在使用此回调来跟踪页面加载的进度,以便我可以使用此信息将我的内容脚本注入页面。
但是,有时progressListener并不总是给出完成状态。
我无法使用此web site中提到的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);
}
答案 0 :(得分:0)
使用制表符进度监听器时,您可以使用onStateChange
。
我不明白为什么你不能使用DOMContentLoaded
,但是......有一些API可以将事件映射回window
(event.originalTarget.defaultView
)和/或{{ 1}}(document
)。