使用Javascript获取thunderbird mailitem正文内容?

时间:2014-09-18 10:14:21

标签: javascript thunderbird thunderbird-addon

我正在开发一个雷鸟扩展。我希望在主窗口中获取mailitem内容并撰写邮件窗口。我如何实现这一目标?

此致 散聚

1 个答案:

答案 0 :(得分:1)

如果您对某个Thunderbird窗口中的某些内容感兴趣,那么弄清楚它是如何在XUL DOM中实现的方法就是安装[add-on] [2] [DOM Inspector] [3 ]并用它来研究DOM的内容是什么样的。您可能还需要,[Element Inspector] [4]附加组件,它是DOM Inspector的一个非常有用的附加功能(右键单击右键可以打开DOM Inspector到单击的元素)。您可能还会发现[Stacked Inspector] [5]很有帮助。

要做的另一件事是找到一个扩展,它在你想要工作的同一个区域做某事。然后下载该扩展程序,看看他们是如何做你感兴趣的事情。

您的问题没有提供足够的信息来为您提供准确,详细的回复。我们需要知道您运行的上下文。正在运行的脚本是否是从主窗口启动的UI事件的一部分?撰写窗口中的UI事件?

如果脚本是从撰写窗口中的UI事件启动的,则可以通过以下方式访问邮件内容:

let editor = document.getElementById("content-frame");
let editorDocument = editor.contentDocument;
let messageBody = editorDocument.getElementsByTagName("body")[0];

这应该有用,但我还没有验证:

let messageBody = document.getElementById("content-frame").contentDocument.body;

关于主窗口:消息内容位于<browser id="messagepane">元素中。获得标签后,您应该可以从那里找到<browser>

在Firefox中,您可以找到<browser>元素:

//Create some common variables if they do not exist.
//  This should work from any Firefox context.
//  Depending on the context in which the function is being run,
//  this could be simplified.
if (typeof window === "undefined") {
    //If there is no window defined, get the most recent.
    var window=Components.classes["@mozilla.org/appshell/window-mediator;1"]
                       .getService(Components.interfaces.nsIWindowMediator)
                       .getMostRecentWindow("navigator:browser");
}
if (typeof document === "undefined") {
    //If there is no document defined, get it
    var document = window.content.document;
}
if (typeof gBrowser === "undefined") {
    //If there is no gBrowser defined, get it
    var gBrowser = window.gBrowser;
}

//Get the current tab & browser.
let tab = gBrowser.selectedTab;
let browserForTab = gBrowser.getBrowserForTab( tab );

它应该与Thunderbird类似。