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

时间:2012-10-20 03:21:50

标签: firefox firefox-addon firefox-addon-sdk

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

我正在使用Addon-SDK创建一个小的firefox插件。一切看起来都很酷但是UI元素。这真的很难实现。

我已经阅读了这里找到的工具栏按钮https://github.com/mozilla/addon-sdk/wiki/Community-developed-modules和Mozilla XUL,并决定通过跟踪浏览器窗口创建我自己的工具栏按钮,使用WindowUtils.onTrack()并操纵浏览器XUL DOM;

这几乎已经完成,但是当我尝试禁用并重新启用我的插件时。按钮没有消失,那里有2个按钮。

这太糟糕了,你可以告诉我如何在禁用或删除插件时销毁或删除其他XUL元素的按钮。我们正在使用addon-SDK,它是无重启的扩展。

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

3 个答案:

答案 0 :(得分:1)

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

https://github.com/voldsoftware/toolbarbutton-jplib/blob/master/lib/toolbarbutton.js

如果您决定自己编写,我建议您查看Erik的代码,因为它会处理卸载按钮。

答案 1 :(得分:1)

我找到了解决方案!

我们可以在加载项上监听禁用或卸载事件,并在那时删除XUL元素。 如:

exports.onUnload = function(reason) {
  // remove code here
}

根据Add-on SDK文档,它有一些附加卸载事件的错误,但我认为它很快就会解决。

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

以上解决方案对我来说非常有用,希望对您也有帮助。 谢谢!

答案 2 :(得分:0)

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

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