2015-12-28 3 views
0

С появлением многопроцессорного Firefox я решил переписать свой аддон с помощью Addon-SDK.Как создать панель инструментов XUL через Javascript?

Мой аддон - это в основном панель инструментов с обширным набором меню.

Addonsdk не предоставляет никакого способа создания меню. So I found this method, с помощью которого я могу добавить их в существующую панель инструментов. Однако я не могу найти способ создания таких меню и добавить их на панель инструментов Addon-SDK. Поэтому я подумал, что просто создаю панель инструментов так же, как я создаю меню.

Итак, я в основном пытаюсь создать панель инструментов XUL с помощью JavaScript (я думаю):

var MyDelegate = { 
    onTrack: function(window){ 
     //don't add this to other windows, just the browser window 
     if(window.location != "chrome://browser/content/browser.xul") { 
      // console.log("=> win location false"); 
      return; 
     } 
     var document = window.document; //we need this to attach the XUL elements 

     var MyBar = window.document.createElement('toolbar'); 
     MyBar.setAttribute('id', 'MyToolbarID'); 
     MyBar.setAttribute('toolbarname', 'MyTitle'); 
     MyBar.setAttribute('class', 'chromeclass-toolbar'); 
     MyBar.setAttribute('mode', 'full');  
     MyBar.setAttribute('hidden', 'false');  
     MyBar.setAttribute('insertafter', 'PersonalToolbar'); 
    } 
} 
let utils = require('sdk/deprecated/window-utils'); // for new style sdk 
utils.WindowTracker(spatDelegate); 

Что я должен сделать, чтобы эта панель инструментов на самом деле получить построен и отображения в браузере?

[обновление]

Причина я не использую панель инструментов SDK, потому что панель инструментов создается асинхронной и не существует во времени, чтобы получить ручку на это HTML идентификатор. Даже если я использую html-идентификатор с помощью панели инструментов браузера, он не добавляется в окно.

+0

О проблеме асинхронным, почему вы не можете отложить выполнение до тех пор, пока не нагружает? –

+0

Могу ли я это сделать? (вы спрашиваете, почему я не могу отложить выполнение - я не могу, потому что я не знал, что смогу :)) – bgmCoder

+0

Обычно асинхронные функции имеют обратные вызовы, которые позволяют выполнять функцию при загрузке. Я не знаком с Firefox SDK, но я уверен, что это возможно. –

ответ

1

Вам нужно добавить MyBar на панель инструментов:

window.document.getElementById("navigator-toolbox").appendChild(MyBar); 
+0

Это все! Спасибо, Гейс! – bgmCoder

Смежные вопросы