Ho creato un'estensione firefox che consiste in un pulsante della barra degli strumenti. Come posso configurarlo in modo che quando viene installata l'estensione, il pulsante venga visualizzato automaticamente nella barra degli strumenti principale. Non voglio che i miei utenti debbano accedere al menu Personalizza barra degli strumenti e trascinare il mio pulsante sopra.Come posso far apparire automaticamente il mio pulsante della barra degli strumenti di estensione di Firefox?
risposta
Da https://developer.mozilla.org/En/Code_snippets:Toolbar#Adding_button_by_default -
Quando si crea e si distribuisce la propria estensione e includere un pulsante della barra degli strumenti per esso sovrapponendo la toolbarpalette Personalizza, non è disponibile per impostazione predefinita. L'utente deve trascinarlo sulla barra degli strumenti. Il seguente codice posizionerà il pulsante sulla barra degli strumenti per impostazione predefinita. Questo dovrebbe essere fatto solo alla prima esecuzione del componente aggiuntivo dopo l'installazione, quindi che se l'utente decide di rimuovere il pulsante, non viene visualizzato nuovamente ogni volta che avvia l'applicazione.
Note
Inserire il pulsante per impostazione predefinita solo una volta, in prima esecuzione, o quando un aggiornamento estensione aggiunge un nuovo pulsante.
Si prega di aggiungere il proprio pulsante di default solo se aggiunge valore reale all'utente e sarà un frequente punto di accesso al proprio interno.
Non è necessario inserire il pulsante della barra degli strumenti tra uno degli elementi seguenti: il pulsante Indietro/Avanti combinato, la posizione , il pulsante stop o il pulsante di ricarica. Questi elementi hanno comportamenti speciali posizionati l'uno accanto all'altro e si interromperanno se separati da un altro elemento.
/**
* Installs the toolbar button with the given ID into the given
* toolbar, if it is not already present in the document.
*
* @param {string} toolbarId The ID of the toolbar to install to.
* @param {string} id The ID of the button to install.
* @param {string} afterId The ID of the element to insert after. @optional
*/
function installButton(toolbarId, id, afterId) {
if (!document.getElementById(id)) {
var toolbar = document.getElementById(toolbarId);
// If no afterId is given, then append the item to the toolbar
var before = null;
if (afterId) {
let elem = document.getElementById(afterId);
if (elem && elem.parentNode == toolbar)
before = elem.nextElementSibling;
}
toolbar.insertItem(id, before);
toolbar.setAttribute("currentset", toolbar.currentSet);
document.persist(toolbar.id, "currentset");
if (toolbarId == "addon-bar")
toolbar.collapsed = false;
}
}
if (firstRun) {
installButton("nav-bar", "my-extension-navbar-button");
// The "addon-bar" is available since Firefox 4
installButton("addon-bar", "my-extension-addon-bar-button");
}
Stiamo utilizzando il seguente codice ....
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;
}
Stiamo utilizzando il seguente codice che aggiungerà il bottone (se esiste già da qualche altra parte nel 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;
},
//...
Ecco un piccolo frammento di script che ho scritto che aggiunge un pulsante alla barra degli strumenti di Firefox per la prima volta proprio interno scorre: Add your extension’s toolbar button to Firefox at first run
- 1. Come centrare il pulsante indietro della barra degli strumenti?
- 2. Barra degli strumenti - aggiungi il pulsante su
- 3. Come implementare la barra degli strumenti di Android Pulsante Indietro
- 4. API di estensione/gadget Gmail - come aggiungere un pulsante alla barra degli strumenti di composizione?
- 5. Come impostare l'altezza del pulsante della barra degli strumenti?
- 6. Come centrare il titolo in una barra degli strumenti (anche con il pulsante indietro della barra degli strumenti visualizzato)
- 7. Come fornire la navigazione in alto con il pulsante home della barra degli strumenti sulla barra degli strumenti v7
- 8. Imposta il titolo della barra degli strumenti
- 9. Barra degli strumenti Pulsante azione Colore icona
- 10. CKEDITOR - Pulsante della barra degli strumenti con testo
- 11. Rendere applicabile lo stile del pulsante Barra degli strumenti a UserControls nella barra degli strumenti
- 12. pulsanti extjs nell'aspetto della barra degli strumenti
- 13. Spaziatura pulsanti della barra degli strumenti iPhone
- 14. Come far apparire la `barra di scorrimento` sul lato sinistro?
- 15. Pulsante "Chiudi" materiale nella barra degli strumenti invece di Indietro
- 16. barra degli strumenti Android pulsante di navigazione id
- 17. iPhone: nascondere/mostrare la barra degli strumenti
- 18. Se il pulsante della barra degli strumenti della barra multifunzione funzionerà nella scheda della pagina iniziale di Tridion?
- 19. Il pulsante Indietro nella barra degli strumenti non funziona
- 20. Android: barra di stato della barra degli strumenti sovrapposta
- 21. come rimuovere il margine sinistro della barra degli strumenti Android?
- 22. Cambia tema barra degli strumenti di programmazione
- 23. Come posso posizionare una barra di avanzamento a destra della barra degli strumenti?
- 24. Come mostrare il mio Spinner a destra della barra degli strumenti
- 25. Posizione barra degli strumenti in linea CKEditor
- 26. Aggiunta pulsante a jqGrid barra degli strumenti superiore
- 27. Laravel: abilitazione barra degli strumenti di debug
- 28. Come determinare l'altezza della barra degli strumenti in UINavigationController?
- 29. Come posso avere un controllo segmentato di riempimento spazio nella barra degli strumenti in un'app iOS?
- 30. Come cambiare il colore del pulsante Indietro della barra degli strumenti in Android?
Grazie, funziona bene. Non sei sicuro del motivo per cui sei una preferenza speciale per la presenza dei pulsanti ... non è sufficiente 'document.getElementById()' per questo scopo? – spektom
non ho idea - non ho scritto il codice, ho appena mostrato un esempio da uno dei miei team. Da allora abbiamo refactored interamente per Firefox 4 quindi non mi fiderei di questo ora ... – saschabeaumont
Penso che impedirà il pulsante di aggiungere ogni volta, nel caso in cui l'utente vuole rimuoverlo. getElementById non lo vedrà e lo aggiungerà ogni volta. –