2011-07-04 4 views
0

私は、特定のデータ構造に対してユーザーが表示するすべての文書をチェックし、バックエンドサーバー呼び出しを行い、結果をダイアログとして表示する拡張機能を作成しています。イベントリスナーでシーケンスを適切に開始し続けます。私の実際の考え方は次のとおりです。ブラウザが開かれますときユーザーが現在表示している内線番号のすべての文書にアクセス

Load: function() 
{ 
var Listener = function(){ Fabogore.Start();}; 
var ListenerTab = window.gBrowser.selectedTab; 
ListenerTab.addEventListener("load",Listener,true); 
} 
(...) 
ListenerTab.removeEventListener("load", Listener, true); 
Fabogore.Load(); 

Fabogore.Load機能が最初に初期化されます。私はこれらのデータ構造を取得した後でしか動作しませんが、その後は動作しません。しかし、理論的には、スクリプトは新しいリスナーを初期化する必要があります。そのため、おそらく選択されたタブです。フォーカスイベントを聞いてみました。

ユーザーが現在表示しているページにアクセスする方法の代替方法がある場合は、私も快適に感じるでしょう。

+0

古い質問で回答を受け入れることを忘れないでください:http://stackoverflow.com/faq#howtoask;) –

+0

Yep;)、問題について私は "load"イベントが間違ったイベントかもしれないと思うhmmm。 – Sebi

答えて

0

一般的なアプローチはprogress listenerです。正しく理解していれば、ブラウザのタブの読み込みが完了するたびに通知を受けたいと思う。だからあなたの進捗リスナーで重要な方法は、(それはしかし、同様に他のすべてのメソッドを持っている必要があります)onStateChange次のようになります。

onStateChange: function(aWebProgress, aRequest, aFlag, aStatus) 
{ 
    if ((aFlag & Components.interfaces.nsIWebProgressListener.STATE_STOP) && 
     (aFlag & Components.interfaces.nsIWebProgressListener.STATE_IS_WINDOW) && 
     aWebProgress.DOMWindow == aWebProgress.DOMWindow.top) 
    { 
    // A window finished loading and it is the top-level frame in its tab 
    Fabogore.Start(aWebProgress.DOMWindow); 
    } 
}, 
+0

私はあなたが私の意見を持っていると思う、これは面白そうだ。私は今日の午後にそれをテストします。 – Sebi

+0

これは、ページロード時の記事に対応するDOMContentLoadedイベントで試してみました。 [ページの読み込み](https://developer.mozilla.org/en/Code_snippets/On_page_load)たぶんそれで十分ですが、残念ながらサーバーのバックエンドがダウンしているため、テストを待つ必要があります。しかし、あなたは私を正しい軌道に戻しました。よりきめ細かいイベントを聞きたいなら、プログレスリスナーが良いと思います。私はこの質問であなたを最新の状態に保つつもりです。 :) – Sebi

0

[OK]を、私はMDNのドキュメントから働く方法を見つけて、そのすべての文書を実現しますユーザーが開いているユーザーは、自分の内線番号でアクセスできます。ユーザーがフォーカスしているすべてのドキュメントにアクセスすると、あまりにも多くのコードを実行する必要があります。だから私は

window.addEventListener("load", function() { Fabogore.init(); }, false); 


var Fabogore = { 
init: function() { 
var appcontent = document.getElementById("appcontent"); // browser 
if(appcontent) 
    appcontent.addEventListener("DOMContentLoaded", Fabogore.onPageLoad, true); 
}, 

Exentsionを初期化で始まり、そしてDOMcontentloadedイベントに耳を傾けるこれは、コードにページがロードされるたびに実行されます。重要なことは、古いコードではなく、新しい読み込みページでコードを実行することです。おかげウラジミールは、あなたがより洗練されたが必要な場合は、私が思う、正しい方向に私をもたらすために、あなたはXPCNativeWrapperのなどを使用してデータ構造を確認することができ、変数「DOC」で

onPageLoad: function(aEvent) 
{ 
var doc = aEvent.originalTarget;//Document which initiated the event 

:あなたは、変数aEventで、このいずれかをアクセスもできますイベントリスニングは、進行リスナーで自分の道を選ぶ。

関連する問題