1

TB拡張機能を開発しています。「from、subject、to」フィールドのすぐ下のmessagePaneにフィールドを追加しました。したがって、フィールド値を正しく更新する必要があります。msgHdrから値を取得しています。私の現在のアプローチは、messagePaneドキュメントの「ロード」イベントをリッスンすることです。TBで開いたメッセージが1つだけの場合は、正常に機能します。ただし、開いているメッセージが複数ある場合は、すべてのウィンドウが最後にロードされたメッセージの「ロード」イベントをトリガーするため、すべてのメッセージウィンドウが同じフィールド値を取得します。バグです。ロードイベントを受信して​​いるときに、ウィンドウで開かれたメッセージのmsgHdrを確認するにはどうすればよいですか?どこかに保管されていますか?ウィンドウにハンドル、URI、その他のID情報がありますか?DOMインスペクターがすべてのmessagePaneに存在するのに、フィールドのDOMノードを1つだけ表示するのはなぜですか?質問の袋でごめんなさい、

ありがとう。

4

1 に答える 1

3

メッセージウィンドウには、プロパティdisplayedMessageを持つグローバル変数gMessageDisplayがあります。displayMessageは、現在表示されているメッセージのnsIMsgDBHdrです。

新しいメッセージが表示されたときに通知を受け取るには、gMessageListenersにリスナーを追加することをお勧めします。

gMessageListeners.push({
  onStartHeaders: function () {},
  onEndHeaders: function () {},
  onEndAttachments: function () {},
  onBeforeShowHeaderPane: function () {}
});

onStartHeadersまたはonEndHeadersでアクションを実行します。

于 2011-02-23T18:55:38.767 に答える