如何使用firefox addon sdk创建选项弹出对话框?

时间:2014-05-10 22:39:15

标签: javascript dialog firefox-addon firefox-addon-sdk options

所以我最近决定创建一个我一直在考虑的 firefox扩展,但之前没有任何经验。我阅读了官方教程并认为插件sdk 似乎很适合我,但我似乎遇到了麻烦。

我想要做的是创建选项弹出式对话框,类似于按alt-tools-options时看到的对话框。也就是说,上部的标题和关闭按钮的边框,以及窗口内的更大区域,我可以在其中定义“直观”(用户习惯使用皮肤的默认元素)GUI。 顶部的标签(一般,隐私安全等)不是我真正需要的,但也不会受到伤害。

所以问题在于,从我的搜索中,当你使用addon sdk时,你不应该使用具有这些元素的XUL,而是你似乎应该使用 HTML in a panel创建一些自定义的东西。 即可。在使用它时,我认为不可能创建类似于真实选项菜单的顶栏,尽管如果我错了,我不介意纠正。

之前我遇到过类似的问题,我希望工具栏中的下拉菜单类似于默认菜单,我解决了这个问题,感谢:How to add a dropdown menu to a firefox addon sdk powered addon toolbar button?。 可能值得注意的是,打开选项对话框的按钮是如此处所述创建的菜单项之一。 我正在考虑可能(也就是我不确定)使用类似于此的东西,但遗憾的是我不知道如何创建一个“单独”(可拖动)弹出窗口,我可以使用它。

如果可能的话,我宁愿在那里存在一个解决方案,但是如果有人知道它确实是不可能的,那么请发布这样的帖子,我可以毫不后悔地放弃,而只是制作某种自定义HTML面板:)< / p>

tldr: 有没有办法在使用addon sdk进行开发时,在firefox中使用alt-tools-options打开的选项窗口中创建类似(样式)的弹出对话框?

1 个答案:

答案 0 :(得分:1)

基本上,你不应该,至少不是SDK。

但话说回来,它仍有可能,但你需要自己做很多事情:

  1. 您需要为加载项注册chrome:包,因为SDK内部使用的resource: URI无法正常用于XUL窗口。创建Chrome Registrationchrome.manifest文件)。自Firefox 24 IIRC以来,SDK支持此功能。
  2. 创建XUL文件。对于首选项/选项窗口,已经存在<prefwindow>绑定。查看其他扩展程序或Firefox Options dialog(具有多个叠加层的巨大事物,因此请更好地查看其他扩展程序)。将XUL文件放在chrome/content/<somefile>.xul中。这将对应chrome://<registered_package_from_1>/content/<somefile>.xul
  3. 实现实际显示窗口的内容。通常,非SDK附加组件只会将em:optionsURL放入其install.rdf,以使附加组件管理器自动创建将打开指定URL的“首选项”按钮,但在SDK中,这是从package.json如果我没有弄错的话,我无法将optionsURL放入package.json。但你可以做其他事情,比如使用simple-prefs type: control按钮在about:addons页面中有一个按钮,或者将它添加到某个浏览器菜单中(这需要另一堆XUL) - 修改,require("chrome")代码。)。要实际打开对话框,您可以使用window/utils.openDialog
  4. 当您的插件卸载时,不要忘记再次关闭所有打开的窗口。
  5. 如您所见,不是一项简单的任务...... 如果您只是在首选项之后,请考虑使用simple-prefs