如何将下拉菜单添加到Firefox的插件SDK供电插件工具条按钮?(How to add a dro

2019-06-24 13:43发布

我用的是https://github.com/erikvold/toolbarbutton-jplib/包从一个插件,SDK附加到Firefox的导航栏添加工具栏按钮。 是否有可能以一个下拉菜单添加到该按钮(我的理解有没有简单的方法)?

Answer 1:

这就是我要做的事; 希望对你有效。

var winUtils = require("window-utils");

var delegate = {
    onTrack: function(window) {
        if(window.location != "chrome://browser/content/browser.xul") {
            // console.log("=> win location false");
            return;
        }

        console.log("window tracked");

        var document = window.document;
        var navBar = document.getElementById('nav-bar');

        var btn = document.createElement('toolbarbutton');  
        btn.setAttribute('id', 'button'); 
        btn.setAttribute('type', 'menu-button');  
        btn.setAttribute('class', 'toolbarbutton-1'); 
        btn.setAttribute('image', 'http://www.facebook.com/favicon.ico');

        btn.addEventListener('command', function() {
        console.log("this=" + this.id); 
                    // your callback code here
                }
        , false);

        var menupopup = document.createElement('menupopup');
        menupopup.setAttribute('id', 'menupopup');
        menupopup.addEventListener('command', function(event) {
            // TODO your callback
          }
        , false);

        //menu items
        var menuitem1 = document.createElement('menuitem');
        menuitem1.setAttribute('id', 'menuitem1');
        menuitem1.setAttribute('label', 'Menu item1');
        menuitem1.setAttribute('class', 'menuitem-iconic');
        menuitem1.addEventListener('command', function(event) {
                // CODE
            }
        , false);
 }
  winUtils.WindowTracker(delegate);


Answer 2:

此代码需要几行,以实际工作:

var delegate = {
onTrack: function(window) {

    if(window.location != "chrome://browser/content/browser.xul") {
        // console.log("=> win location false");
        return;
    }

    var document = window.document;
    var navBar = document.getElementById('nav-bar');

    var btn = document.createElement('toolbarbutton');
    btn.setAttribute('id', 'button');
    btn.setAttribute('type', 'menu-button');
    btn.setAttribute('class', 'toolbarbutton-1');
    btn.setAttribute('image', 'http://www.facebook.com/favicon.ico');

    btn.addEventListener('command', function() {
            console.log("this=" + this.id);
            // your callback code here
        }
        , false);

    var menupopup = document.createElement('menupopup');
    menupopup.setAttribute('id', 'menupopup');
    menupopup.addEventListener('command', function(event) {
            // TODO your callback
        }
        , false);

    //menu items
    var menuitem1 = document.createElement('menuitem');
    menuitem1.setAttribute('id', 'menuitem1');
    menuitem1.setAttribute('label', 'Menu item1');
    menuitem1.setAttribute('class', 'menuitem-iconic');
    menuitem1.addEventListener('command', function(event) {
            // CODE
        }
        , false);

    menupopup.appendChild(menuitem1);
    btn.appendChild(menupopup);
    navBar.appendChild(btn);

    console.log("window tracked");

    }
};

//let utils = require('api-utils/window-utils');
let utils = require('sdk/deprecated/window-utils'); // for new style sdk
utils.WindowTracker(delegate);


文章来源: How to add a dropdown menu to a firefox addon sdk powered addon toolbar button?