2011-06-24 20 views
0

(特定の)ページが読み込まれたときに実行されるfirefox拡張機能を書き込もうとしています(同じキーワードが置き換えられます)。Firefox拡張:ページ読み込み時に実行

私はコードのように記述していない:

window.addEventListener("load", function() maApp.init(); }, false); 
var maApp= { 

    init: function() { 
    var appcontent = document.getElementById("appcontent"); // browser 
    if(appcontent) 
     appcontent.addEventListener("DOMContentLoaded", maApp.onPageLoad, true); 
    var messagepane = document.getElementById("messagepane"); // mail 
    if(messagepane) 
     messagepane.addEventListener("load", function(event) { maApp.onPageLoad(event); }, true); 
    }, 
    onPageLoad: function() { 
      alert("test); 
     doSomething(); 
    }      
}; 

しかしonPageLoadが実行されることはありません...何の警告を...誰かが私が間違ってやっているものを私に教えてくださいことはできますか?

+1

は、あなたが最初の行にブレースを逃した... – YeJiabin

+0

が、あるいは単に直接関数を渡す:maApp.init –

+0

は、この、の文脈何ですかFirefox/Thunderbirdオーバーレイ? Thunderbirdには ''がありますが、Firefoxでは 'appcontent'はブラウザではなくそのコンテナです。コンテンツフレームからのイベントはバブルアップしないので、ブラウザにリスナーを直接接続する必要があります( 'document.getElementById(" content ")')。 –

答えて

4

最初にブラウザ要素を取得する際のいくつかの単語。 Firefoxでは、この要素のIDはcontentで、appcontentではありません。それでも、取得するための推奨方法はwindow.gBrowserです。 Thunderbird 5では、ブラウザ要素のIDが変更され、コードが機能しなくなりました。IDで行くよりも、window.messageContent変数を使用する必要があります。この変数は、現在および将来のバージョンで動作します。一緒にあなたが得る:

var browser = null; 
if ("gBrowser" in window) 
    browser = window.gBrowser;    // Firefox and SeaMonkey Browser 
else if ("messageContent" in window) 
    browser = window.messageContent;  // Thunderbird 
else if ("getMessageBrowser" in window) 
    browser = window.getMessageBrowser(); // SeaMonkey Mail 

if (browser) 
    ... 

を今すぐページのロードを聴いについて、ここで推奨されるアプローチは、進捗リスナーである - https://developer.mozilla.org/en/Code_snippets/Progress_Listenersを参照してください。あなたはブラウザに進捗リスナーを添付し、状態変化を探します。

onStateChange: function(aWebProgress, aRequest, aFlag, aStatus) 
{ 
    if ((aFlag & Components.interfaces.nsIWebProgressListener.STATE_STOP) && 
     (aFlag & Components.interfaces.nsIWebProgressListener.STATE_IS_WINDOW)) 
    { 
    // A window finished loading 
    doSomething(aWebProgress.DOMWindow); 
    } 
} 
+0

私のvarのmaApp = {}私はonStateChangeを追加する必要がありますか? – PsychoX

+0

いいえ、私があなたに与えたリンクを読むべきです。 maAppを進捗リスナーにすることも、別の進捗リスナー・オブジェクトを作成することもできます(重要ではありません)。しかし、進捗リスナーは、それらを使用しなくても、すべてのメソッド( 'onSecurityChange'、' onProgressChange'など)を持つ必要があります。 –

+0

ありがとうございます。それを実行しました:) – PsychoX

関連する問題