使用Firefox插件SDK在禁用插件时删除XUL元素

使用Firefox插件SDK在禁用插件时删除XUL元素,firefox,firefox-addon,firefox-addon-sdk,Firefox,Firefox Addon,Firefox Addon Sdk,我也尝试在这里搜索谷歌。但我似乎没有运气 我正在使用插件SDK创建一个小的firefox插件。除了UI元素之外,一切看起来都很酷。这真的很难实施 我已经阅读了这里找到的工具栏按钮和Mozilla XUL,并决定通过跟踪浏览器窗口、使用WindowUtils.onTrack()和操作浏览器XUL DOM来创建我自己的工具栏按钮 这几乎已经完成了,但当我尝试禁用并重新启用我的加载项时。按钮没有消失,还有两个按钮 这太糟糕了,你能告诉我当插件被禁用或删除时,如何销毁或删除该按钮以及其他XUL元素吗。我

我也尝试在这里搜索谷歌。但我似乎没有运气

我正在使用插件SDK创建一个小的firefox插件。除了UI元素之外,一切看起来都很酷。这真的很难实施

我已经阅读了这里找到的工具栏按钮和Mozilla XUL,并决定通过跟踪浏览器窗口、使用WindowUtils.onTrack()和操作浏览器XUL DOM来创建我自己的工具栏按钮

这几乎已经完成了,但当我尝试禁用并重新启用我的加载项时。按钮没有消失,还有两个按钮

这太糟糕了,你能告诉我当插件被禁用或删除时,如何销毁或删除该按钮以及其他XUL元素吗。我们正在使用插件SDK,它是一个无需重启的扩展


我的另一个问题是,当操作BrowserXULDom WindowUtils或WindowMediator时,我们应该使用什么?或者另一种更快捷、更方便?

最简单的方法是使用Erik Vold的工具栏库:


如果你决定自己写,我建议你看看Erik的代码,因为它确实可以卸载按钮。

我找到了一个解决方案

我们可以监听插件上的disable或uninstall事件,并在那时删除XUL元素。 例如:

根据附加SDK文档,它在附加卸载事件中有一些bug,但我认为它很快就会解决

SDK中有一个卸载模块,我还没有试过。希望有人能分享一下

以上解决方案对我来说非常有效,希望这对你也有帮助。
谢谢大家!

Firefox插件sdk有一个bug,所以如果您想检测插件的卸载。您必须使用“禁用”而不是“卸载”

exports.onUnload = function(reason) {
  // remove code here
}
exports.onUnload = function (reason) {
         if (reason==='disable') {
            //remove code here
         }
    };