随着多进程Firefox的出现,我决定使用Addon-SDK重新编写我的插件。
我的插件主要是一个包含大量菜单的工具栏。
addonsdk没有提供任何构建菜单的方法。 So I found this method我可以将它们添加到现有工具栏中。但是,我找不到任何方法来创建这样的菜单并将它们添加到Addon-SDK工具栏。所以我想我会像创建菜单一样创建工具栏。
所以,我基本上是想通过javascript创建一个XUL工具栏(我认为):
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 id。即使我使用浏览器工具箱捕获html id,它也不会被添加到窗口中。
答案 0 :(得分:1)
您需要将MyBar
添加到工具箱中:
window.document.getElementById("navigator-toolbox").appendChild(MyBar);