「タブを閉じる」イベントにフックする方法が見つかりません。
(不適切に文書化された)<tabmail>
要素を使用すると、タブモニターを登録できます。このようなものが機能するはずです:
var tabmail = document.getElementById("tabmail");
var monitor = {
onTabClosing: function(tab)
{
...
}
};
tabmail.registerTabMonitor(monitor);
また、現在開いているタブのメッセージURIを取得するのに問題があります
この<tabmail>
要素にはtabInfo
、現在開いているタブに関する情報を含むプロパティがあります。おそらく、が存在するタブのみを確認する必要がありますmode.name
(または"message"
など、他のモードも多数あります)。このモードにはメソッドがあるため、次のように実行する必要があります。"folder"
"contentTab"
getBrowser()
var tabmail = document.getElementById("tabmail");
for (var i = 0; i < tabmail.tabInfo.length; i++)
{
var tab = tabmail.tabInfo[i];
if (tab.mode.name == "message")
alert(tab.mode.getBrowser().currentURI.spec);
}
編集:Peterがコメントで指摘しているように、メッセージのURIを取得するアプローチは、現在読み込まれているメッセージでのみ機能します。すべてのタブは、メールメッセージに同じブラウザ要素を再利用します。URIを適切に取得することはより複雑です。メッセージのnsIMsgDBHdr
インスタンスTabInfo.folderDisplay.selectedMessage
を経由して取得し、それを使用nsIMsgFolder.getUriForMsg()
してURIを作成する必要があります。
var tabmail = document.getElementById("tabmail");
for (var i = 0; i < tabmail.tabInfo.length; i++)
{
var tab = tabmail.tabInfo[i];
if (tab.mode.name != "message")
continue;
var message = tab.folderDisplay.selectedMessage;
alert(message.folder.getUriForMsg(message));
}