Thunderbird扩展 - 如何使用Javascript使用相对路径?

时间:2014-03-05 14:46:51

标签: javascript thunderbird thunderbird-addon

我正在开发自己的Thunderbird扩展程序。 该扩展添加了一个.xml文件作为Thunderbird邮件的附件(它工作得非常好)。 我唯一的问题是我不知道如何使用相对路径。

它看起来像那样:

var file= 'C:\\...[… \\…]...\\chrome\\VHitG2.xml';
var attachments = [];
    attachments.push(FileToAttachment(file));
    AddAttachments(attachments); 

如果扩展程序安装在其他路径中,则扩展程序无法正常工作 Doe的任何人都知道如何使用相对路径?

2 个答案:

答案 0 :(得分:0)

FileToAttachment()函数没有魔法,它实际上是very simple。我假设您正在讨论属于扩展程序的静态文件 - 它应该可以在chrome://myextension/content/VHitG2.xml之类的网址下访问。然后,您可以使用该URL自行创建nsIMsgAttachment实例:

var attachment = Components.classes["@mozilla.org/messengercompose/attachment;1"]
                           .createInstance(Components.interfaces.nsIMsgAttachment);
attachment.url = "chrome://myextension/content/VHitG2.xml";
AddAttachments([attachment]);

请注意,您的扩展程序不需要为此解压缩,您不需要磁盘上的实际文件。

答案 1 :(得分:0)

我使用非常迂回的方式获取扩展程序文件的URL:

Components.utils.import("resource://gre/modules/FileUtils.jsm");
var test1 = FileUtils.getFile("CurProcD", ["VHitG2.xml"]);
var test2 = FileUtils.getFile("CurProcD", ["VHitG.xml"]);
var file1 = test1.path.replace(/VHitG2.xml/i, "extensions\\custom-toolbar-button@example.com\\chrome\\VHitG2.xml");
var file2 = test2.path.replace(/VHitG.xml/i, "extensions\\custom-toolbar-button@example.com\\chrome\\VHitG.xml");
var attachment1 = file1.replace(/\\/g, "\\\\");
var attachment2 = file2.replace(/\\/g, "\\\\");