I've created a firefox extension that consists of a toolbar button. How can I set it up so that when my extension is installed, the button automatically appears in the main toolbar. I don't want my users to have to go to the customize toolbar menu and drag my button over.
views:
824answers:
4
+2
A:
May not be a good idea, the user may not want the extension to "congigure" his browser.
I really hate things messing with my presets.
Cesar
2009-02-24 02:23:17
A:
We're using the following code....
function init() {
// ....
var navbar = document.getElementById("nav-bar");
if ((myExtensionShared.checkMyBtnInstalled() == false) &&
(navbar != null && document.getElementById("myExtension-button") == null)) {
var newset;
if (navbar.getAttribute('currentset') &&
navbar.getAttribute('currentset').indexOf('myExtension-button') == -1) {
navbar.insertItem ('myExtension-button', null, null, false);
newset = navbar.getAttribute('currentset') + ',myExtension-button';
navbar.setAttribute('currentset', newset);
document.persist('nav-bar', 'currentset');
}
else if (!navbar.getAttribute('currentset')) {
navbar.insertItem ('myExtension-button', null, null, false);
newset=navbar.getAttribute('defaultset') + ',myExtension-button';
navbar.setAttribute('currentset', newset);
document.persist('nav-bar', 'currentset');
}
}
// ....
}
myExtensionShared.prototype.checkMyBtnInstalled = function() {
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
var btnInstalled = false;
if (prefs.prefHasUserValue("extensions.myExtension.myBtnInstalled")) {
btnInstalled = prefs.getBoolPref("extensions.myExtension.myBtnInstalled");
}
if (!btnInstalled) {
prefs.setBoolPref("extensions.myExtension.myBtnInstalled", true);
}
return btnInstalled;
}
sascha
2009-02-24 02:42:06
A:
We are using the following code that will append the button (if already exist somewhere else in the bar).
//...
appendButtonInToolbar:function(buttonId, toolbarId) {
var toolbar = document.getElementById(toolbarId);
var button = document.getElementById(buttonId);
if(button) {
var parentBar = button.parentNode;
if(parentBar && parentBar != toolbar) {
var newset = this.removeButtonFromToolbarCurrentSet(parentBar,buttonId);
}
toolbar.appendChild(button);
}else{
toolbar.insertItem(buttonId);
}
this.appendButtonInToolbarCurrentSet(toolbar,buttonId);
},
appendButtonInToolbarCurrentSet:function(toolbar, buttonId) {
var oldset = toolbar.getAttribute("currentset");
var newset = "";
if(oldset && oldset!="") {
newset = oldset + ",";
}
newset += buttonId;
toolbar.setAttribute("currentset", newset);
document.persist(toolbar.id,"currentset");
return newset;
},
removeButtonFromToolbarCurrentSet:function(toolbar, buttonId) {
var oldset = toolbar.getAttribute("currentset");
if(!oldset || oldset=="" || oldset.indexOf(buttonId) == -1) return oldset;
var reg = new RegExp(buttonId+",?", "gi");
var newset = oldset.replace(reg,"");
if (newset.charAt(newset.length-1) == ",") {
newset = newset.substring(0, newset.length - 1);
}
toolbar.setAttribute("currentset", newset);
document.persist(toolbar.id,"currentset");
return newset;
},
//...
Cyno
2009-05-28 15:28:09