正确的方法为Firefox扩展定义插件

时间:2012-10-22 12:21:45

标签: firefox-addon xul

我写了一个Firefox扩展(MyPlugin),它为一些Firefox扩展(MainExtension)添加了一些功能。我想把它放在Mozilla附加组件页面上,但我首先要检查构建这种扩展的最佳方法。

目前,我在Chrome.manifest中使用MyPlugin的xul覆盖MainExtension的xul。在MyPlugin的xul中,标签调用.js文件,该文件定义MainExtension.MyPlugin及其所有方法,可以通过叠加元素调用。

这个设置是否可靠?当我第一次尝试将插件上传到Mozilla Add-ons页面时,我发现不再支持install.rdf的“requires”元素。我一直在想,这将检查MainExtension是否实际安装。我应该在插件中添加任何错误检查以确保安装了MainExtension吗?我认为现在chrome.manifest中的覆盖线只会在未安装MainExtension时失败,然后不会发生任何其他事情,这似乎没问题。从功能上讲,我不打算在没有主扩展的情况下安装插件,所以这应该不是问题,但是因为我想发布其他人可以下载它的扩展,我想确保我没有创建任何问题对于他们(我对Firefox扩展结构并不熟悉 - 大多数情况下我通过查看其他已发布的扩展程序将它放在一起)。

1 个答案:

答案 0 :(得分:0)

所以我在扩展上工作了一些,在线阅读了更多文档,并咨询了一些经验丰富的开发人员,我现在解决的问题是使用模块来定义扩展的一些基本内部部分。我在模块中创建一个MyPlugin对象,然后通过使用模块对Firefox进行通用。然后使用由MainExtension的xul叠加调用的脚本,我创建了另一个chrome对象(称为MyPluginChrome),它只包含与MainExtension的XUL元素交互相关的函数。在提出这个问题的时候,我虽然有必要定义一个XPCOM组件,以便让我的插件独立,这似乎对我现有扩展的简单插件有点过分,但使用模块使得插件独立,与我一直在做的事情。

为了学习如何执行上述操作,我使用了Mozilla开发人员网站上JavaScript Object ManagementXUL School tutorial页面。本教程有点古怪(因为它是从其他来源改编而来)但非常有用。它与MDN上的Building an Extension页面分开。其他几个较旧的网页在Google上有较高的点击量,但我发现XUL学校的教程是最具信息性和实用性的。