所以我最近决定创建一个 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。
不过话又说回来了,还是可以的,只是需要自己做很多事情:
- 您需要注册
chrome:
附加组件的包,如resource:
SDK 在内部使用的 URI 对于 XUL 窗口无法正常工作。创建 Chrome Registration (chrome.manifest
文件)。自 Firefox 24 IIRC 起,SDK 就支持这一点。 - 创建 XUL 文件。对于首选项/选项窗口,已经有
<prefwindow>
捆绑。查看其他扩展和/或 Firefox Options dialog (这是一个具有多个叠加层的巨大东西,所以最好看看其他扩展)。将 XUL 文件放在chrome/content/<somefile>.xul
中.这将对应于chrome://<registered_package_from_1>/content/<somefile>.xul
. - 实现一些实际显示窗口的东西。通常非 SDK 插件只会放置
em:optionsURL
进入他们的install.rdf
, 让附加组件管理器自动创建一个首选项按钮来打开指定的 URL,但在 SDK 中,这是从package.json
生成的而且没有办法把optionsURL
在package.json
如果我没错的话。但是你可以做其他事情,比如使用simple-prefs
type: control
按钮在您的about:addons
中有一个按钮页面,或将其添加到某些浏览器菜单(这将需要另一堆 XUL 修改,require("chrome")
代码。)。要实际打开对话框,您可以使用window/utils.openDialog
. - 卸载加载项时不要忘记再次关闭所有打开的窗口。
如您所见,这不是一项简单的任务...
如果您只是追求一般偏好,请考虑使用 simple-prefs
.
关于javascript - 如何使用 firefox 插件 sdk 创建一个选项弹出对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23587054/