0

私は Firefox 拡張機能の開発が初めてで、最初のプログラムを実行しています。ページがロードされたら、アラートをポップアップ表示する必要がありました。私のコードは次のようなものでした:

var myExtension = {  
init: function() {    
    if(gBrowser) gBrowser.addEventListener("DOMContentLoaded", this.onPageLoad, false);  
},  
onPageLoad: function(aEvent) { 
alert("Loaded");  
}
}  
window.addEventListener("load", function load(event){  
window.removeEventListener("load", load, false);
myExtension.init();    
},false); 

しかし、アラートボックスが数回表示されます。次に、「#document」を見つけて、IF 条件を追加しました。

onPageLoad: function(aEvent) { 
    if (aEvent.originalTarget.nodeName == '#document')  {
    alert("Loaded");  
    }
}

残念ながら、私はまだ同じことをしています。これについて私にアドバイスしてください。

4

2 に答える 2

0

Firefoxアドオンからのページロードをインターセプトするためのいくつかの方法の説明は、MDNにあります: https ://developer.mozilla.org/en/XUL_School/Intercepting_Page_Loads

適切なソリューションの選択は、何を達成したいかによって異なります。

  • 特定のページが読み込まれたときに何かしたいですか?
  • ページが読み込まれたときに何かしたいですか?
  • ページ全体が読み込まれるとき(onload)、ドキュメントの準備ができたとき(ondomready)、またはFirefoxに表示されるページが変更されたとき、たとえばタブを切り替えたり開いたりするとき(これにはまったく異なるアプローチが必要です)に行う必要がありますか?
于 2012-05-30T11:14:12.143 に答える
0

iframe の問題である可能性があります。iframe を除外するには:

onPageLoad: function(aEvent) { 
    let ot=aEvent.originalTarget;
    if (ot.nodeName == '#document' && !ot.defaultView.frameElement)  {
    alert("Loaded");  
    }
}
于 2012-05-30T11:13:28.820 に答える