我正在开发一个 Firefox 扩展,需要一些帮助。
我的扩展被覆盖并使用 XBL 绑定向用户界面添加新项目。
是否可以将此扩展转换为引导类型?
我正在尝试向查找栏添加一个按钮。
使用 XBL 覆盖查找栏界面。
从引导程序开始,我在 style.css 中包含“findbar{ -moz-binding:...}”规则,并在 startup() 上注册此表
(使用 nsIStyleSheetService.loadAndRegisterSheet())。
在这种情况下,我的按钮无需重新启动即可添加到栏中。
但是当我禁用或删除插件时,我需要重新启动浏览器以使按钮消失。
我尝试在 bootstrap.js 中的 shutdown() 上使用以下方法将其删除:
var fb=window.gFindBar.getElement("findbar-container")
var but=window.gFindBar.getElement("the-button")
fb.removeChild(but)
但这并没有删除它。我调试了代码并找到并删除了所有元素(fb,但是),但它没有触及我拥有或打开的任何选项卡中的真正查找栏。
所以我试图取消注册将我的 XBL 绑定到查找栏的样式表。这次 findbar 只是没有在当前选项卡中打开。
但是在新标签中它打开并且没有按钮(更好一点......)。
我还发现 findbar 没有在打开的选项卡中打开,因为一个奇怪的错误:“this.browser is undefined”。
此错误指向 findbar.xml 行 533,其中代码尝试运行 _unpdateCaseSensitivity() 但无法获得“gFindBar._browser”属性。
也许是因为从浏览器启动时没有为原始 findbar 对象加载此属性(它被覆盖的 findbar 对象使用)...
所以这是我坚持的重点......
现在的问题是:
如何在不重新启动的情况下删除按钮并打开查找栏?