0

質問を説明する前に、私の主な目標を説明したいと思います(私のアプローチよりも良い方法がある場合):

私はドキュメント要素を利用できます。理想的には、タブを一意に識別するようなブラウザー要素を取得したいと考えていました。以前のアプローチで使用した

gBrowser.getBrowserForDocument(doc);

これにより、実際にタブに固有のブラウザーが返されました (タブに保存された属性がページ間で保持されるという意味で)。代わりに、ブラウザー要素を保存せず、同じタブ内の別のページに移動した後、上記のコマンドを再度実行すると、ブラウザーは以前と同じではなくなります (すべての要素が失われたという意味で)。保存された属性)。

そこに私の主な問題があります。同じタブにロードされたさまざまなドキュメントを使用して参照できるタブ ブラウザを取得したいと考えています。

同様の機能について読みました:

gBrowser.getBrowserForTab(tab);

これはうまくいくかもしれないと感じています。しかし、ここでも、パラメータ「タブ」をどこから取得できるかを理解できません(ドキュメントが与えられた場合)。

注: 拡張機能の開発には GWT を使用しています


編集:質問の意図を明確にするために、ユースケースと私のアプローチを次に示します。

私の拡張では、特定の Web サイトでのユーザーの行動を監視することに興味があります。ある意味では、ユーザーが同じ Web サイトにとどまるまでアクティブなセッションと考えることができます。セッション中に、ユーザーの行動に固有のさまざまな属性を保存する必要があることがよくあります。"isSessionActive" の質問に関する属性の 1 つ:"Y" または "" (空白文字列はいいえを表します)

コードをより最適化するために、最初にすべてのタブのブラウザーをインスタンス化しません。代わりに、onLoad 関数を使用してキューを待ちます。: 関連するウェブサイトが訪問された場合

それが発生したら、現在のドキュメント要素を使用してブラウザーを取得する呼び出しを行い、isSessionActive 属性の値が空でないかどうかを確認します。そうでない場合は、属性値を「Y」に設定し、その後プロファイリングを処理するクラスをインスタンス化します。

値が「Y」の場合、セッションがまだアクティブであり、初期化する必要がないことがわかります。

私が直面している問題は、最初のインスタンス化の後、同じタブ内の別のページに移動したときに、gBrowser.getBrowserforDocument(doc); への呼び出しが期待されることです。

基本的に同じタブであるため、以前にインスタンス化されたブラウザーが表示されます。

これは起こっていません。属性 isSessionActive を「Y」として持たない新しい Browser インスタンスを取得するたびに (おそらく、新しいページに新しいドキュメント要素があるため)。したがって、現在、すべてのコードが何度も何度もインスタンス化されていますが、これは望ましくありません。

4

1 に答える 1

1

現在のタブのみで作業している (背景のタブは使用していない) 場合は、gBrowser.selectedTab https://developer.mozilla.org/en/XUL/tabbrowser#p-selectedTabを使用できます。

于 2012-06-12T23:11:39.270 に答える