Mozilla(Firefox,Thunderbird)扩展:如何获取扩展ID(来自install.rdf)?

Dan*_*nie 5 javascript firefox thunderbird firefox-addon thunderbird-addon

如果您正在为其中一个mozilla应用程序(例如Firefox,Thunderbird等)开发扩展,则在install.rdf中定义扩展ID.

如果由于某种原因你需要知道扩展名id,例如在本地文件系统(1)中检索扩展名dir,或者如果你想将它发送到webservice(useage统计)等,那么从安装中获取它会很好.rdf赞成在你的javascript代码中硬编码.

但是如何从我的扩展程序中访问扩展程序ID?

1)示例代码:

var extId = "myspecialthunderbirdextid@mydomain.com";
var filename = "install.rdf";
var file = extManager.getInstallLocation(extId).getItemFile(extId, filename);
var fullPathToFile = file.path;
Run Code Online (Sandbox Code Playgroud)

Rus*_*hyo 3

我相当确定“硬编码 ID”在扩展的整个生命周期中永远不会改变。这就是 ID 的全部目的:它对于该扩展来说是唯一的,永久的。只需将其存储为常量并在库中使用该常量即可。这没有什么问题。

不好做法是使用 install.rdf,它存在的唯一目的是……嗯,安装。一旦开发了扩展,install.rdf 文件的状态就无关紧要,并且很可能不一致。

“安装清单是启用附加组件管理器的 XUL 应用程序在安装附加组件时使用它来确定有关附加组件的信息的文件”[1]

打个比方,这就像从溢出中访问已删除对象的内存。该对象仍然存在于内存中,但它在逻辑上不再相关,并且使用其数据是一个非常非常糟糕的主意。

[1] https://developer.mozilla.org/en/install_manifests