javascript - 如何使用 firefox 插件 sdk 创建一个选项弹出对话框?

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

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

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

所以问题是,根据我的搜索,当您使用插件 sdk 时,您不应该使用具有这些元素的 XUL,而是您似乎应该使用 HTML in a panel 创建自定义内容。我认为在使用它时不可能创建类似于真实选项菜单的顶部栏,尽管如果我错了我不介意被纠正。

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

如果可能的话,我更希望有一个解决方案,但如果有人知道这确实是不可能的,请把它贴出来,我可以毫不遗憾地放弃,只做一些自定义的 HTML 面板:)

长话短说: 在使用 addon sdk 进行开发时,有没有一种方法可以创建一个类似于(风格上)选项窗口的弹出对话框,您可以在 firefox 中使用 alt-tools-options 打开?

最佳答案

基本上,您不应该这样做,至少不应该使用 SDK。

不过话又说回来了,还是可以的,只是需要自己做很多事情:

  1. 您需要注册 chrome:附加组件的包,如 resource: SDK 在内部使用的 URI 对于 XUL 窗口无法正常工作。创建 Chrome Registration (chrome.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 生成的而且没有办法把optionsURLpackage.json如果我没错的话。但是你可以做其他事情,比如使用 simple-prefs type: control按钮在您的 about:addons 中有一个按钮页面,或将其添加到某些浏览器菜单(这将需要另一堆 XUL 修改,require("chrome") 代码。)。要实际打开对话框,您可以使用 window/utils.openDialog .
  4. 卸载加载项时不要忘记再次关闭所有打开的窗口。

如您所见,这不是一项简单的任务... 如果您只是追求一般偏好,请考虑使用 simple-prefs .

关于javascript - 如何使用 firefox 插件 sdk 创建一个选项弹出对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23587054/

相关文章:

javascript - 在 Mocha 中使用 async/await - 测试挂起或以未处理的 promise 拒绝结束

c++ - 对话窗口内的子对话窗口

javascript - 无法在 Firefox 插件中向面板发送消息? (该页面目前处于隐藏状态,在再次可见之前无法再使用)

google-chrome - 在 Firefox/Chrome 扩展程序中使用 Java/Python 库

javascript - Firefox 扩展面板不执行 html 代码

javascript - 如何以干净的方式动画和更改 slider 计数器位置?

javascript - 在 Node JS 中执行代码时无法通过命令访问文件

java - SWT - 需要有关文本框/表格/添加和删除值的建议

java - Dialog.dimiss() 不起作用

javascript - jQuery ajax请求和html只显示一次数据