gpt4 book ai didi

xul - 关闭消息选项卡/窗口时访问 Thunderbird 消息

转载 作者:行者123 更新时间:2023-12-04 22:06:53 25 4
gpt4 key购买 nike

我们开发了一个 Thunderbird (11) 插件,允许我们将消息内容保存到磁盘。现在我们正在扩展此扩展以允许在您关闭消息时自动处理消息。我们遇到了很多问题:

我们找不到挂接到“关闭标签”事件的方法。我们也无法获取当前打开的选项卡的消息 URI(我们现在正在 try catch 点击和键盘事件)。此信息在选项卡容器的 DOM 中似乎不可用。

有没有办法以通用方式检测邮件消息选项卡或窗口的关闭,以及检索已关闭邮件消息的 URI 以进行进一步处理?

我们查看了选项卡容器的文档,NsIWindowMediator,尝试了各种事件监听器,但到目前为止没有成功。

编辑:我们正在使用最近关闭的选项卡列表获得一些结果。这不是一个非常优雅的解决方案,但至少我们有一个对选项卡的引用。现在我们只需要获取包含在选项卡内的消息的 URI。

最佳答案

We cannot find a way to hook into a 'close tab' event.

( badly documented ) <tabmail>元素允许注册选项卡监视器。这样的事情应该有效:

var tabmail = document.getElementById("tabmail");
var monitor = {
onTabClosing: function(tab)
{
...
}
};
tabmail.registerTabMonitor(monitor);

We are also having trouble getting the Message URI of the currently open tabs

<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 instance通过 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));
}

关于xul - 关闭消息选项卡/窗口时访问 Thunderbird 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10045556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com