Firefox 拡張機能で tabsProgressListener の onProgressChange コールバックを使用しています。このコールバックを使用してページ読み込みの進行状況を追跡し、この情報を使用してコンテンツ スクリプトをページに挿入できるようにしています。
ただし、progressListener が常に完了ステータスを示すとは限りません。
このWeb サイトに記載されている 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);
}