我们找不到挂钩“关闭标签”事件的方法。
(文档不详)<tabmail>
元素允许注册选项卡监视器。像这样的东西应该工作:
var tabmail = document.getElementById("tabmail");
var monitor = {
onTabClosing: function(tab)
{
...
}
};
tabmail.registerTabMonitor(monitor);
我们也无法获取当前打开的选项卡的消息 URI
该<tabmail>
元素有一个tabInfo
包含当前打开选项卡信息的属性。您可能只想查看所在的选项卡mode.name
("message"
还有许多其他模式,例如"folder"
or "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);
}
编辑:正如彼得在评论中指出的那样,获取消息 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));
}