2012-05-18 32 views

回答

4

這就是我的做法;希望對你有效。

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); 
+0

感謝。我無法找到可以設置按鈕屬性的文檔以及影響。任何想法,我可能會找到它? – willlma

+1

我們所做的只是一些喜歡我們操縱Firefox的DOM的東西,並且您應該閱讀關於XUL的信息,可以在這裏找到它https://developer.mozilla.org/zh-CN/docs/XUL 有時我必須通過Firebug檢查Firefox才能找出元素屬性,這裏有一些關於Firefox XUL的參考 http://kb.mozillazine.org/Dev_:_Firefox_Chrome_URLs – simpletron

+0

我還有一個關於構建工具欄的相關問題:http:// stackoverflow。 com/questions/34487459/how-to-create-xul-toolbar-via-javascript – bgmCoder

4

此代碼需要幾行,以實際工作:

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); 
+0

嘿!這真的有用!它也是即插即用的 - 只需將其粘貼到index.js文件中即可,無需任何編輯即可使用! – bgmCoder

+0

啊,代碼適用於導航欄,但試圖用它來建立菜單到addonsdk按鈕 - shooie!我無法弄清楚。 – bgmCoder

相關問題