2012-04-17 75 views
2

我有一个基于xul overlay的Firefox加载项。它具有在content/options.xul中定义的内联选项,当用户转到Firefox->附加组件 - >扩展 - > {我的扩展名} - >选项时,它们正确显示/正常运行。选项以编程方式显示options.xul

问题,我可以在我的附加组件上创建一个按钮,通过将用户带到Firefox->附加组件 - >扩展组件 - > {我的扩展名} - >选项,启动我的选项,只需点击一下鼠标或启动基于options.xul的对话框?

现在我正在维护一个单独的options.html和options.js,获取并设置options.xul在用户通过Firefox按钮浏览时处理的相同设置,但我更愿意转储options.html和options .js并只维护我的main.js和options.xul。

任何意见或代码示例将不胜感激。

回答

4

这是最简单的通过在浏览器窗口中定义一个全局函数BrowserOpenAddonsMgr()做的,是这样的:

BrowserOpenAddonsMgr("addons://detail/" + encodeURIComponent(addonID)); 

此函数负责集中现有的附加选项卡,如果有一个或开设新的标签。它不会向下滚动到选项,但是如果插件具有冗长的描述,则这是一个问题。与Firefox 12开始这可以通过添加“/首选项”的视图标识符来解决:

BrowserOpenAddonsMgr("addons://detail/" + encodeURIComponent(addonID) + "/preferences"); 

对于较早的Firefox版本你的运气了(你不应该使用这个后缀有,也不会工作)。另一个问题是,可能会有一个漫长的“加载”阶段,其中附加组件管理器为所有扩展提取元数据。

+0

非常感谢,真是太棒了! – 2012-04-17 19:48:50

+0

我无法使用'BrowserOpenAddonsMgr()'函数。我无法在网上找到任何文档或其他用途。我可以在addon sdk的main.js中使用吗? – thefoyer 2012-10-01 01:52:05

+2

@thefoyer:你不能 - 它是一个在浏览器窗口的上下文中定义的函数。这意味着您首先必须使用低级模块获取浏览器窗口,然后调用该函数:'require(“window-utils”)。activeBrowserWindow.BrowserOpenAddonsMgr(...)'。这个函数是一个实现细节,因此除了源代码之外,其他地方都不会找到它。 – 2012-10-01 14:18:57

相关问题