J'ai créé une extension firefox qui se compose d'un bouton de barre d'outils. Comment puis-je le configurer de sorte que lorsque mon extension est installée, le bouton apparaît automatiquement dans la barre d'outils principale. Je ne souhaite pas que mes utilisateurs accèdent au menu de la barre d'outils personnalisée et glissent mon bouton.Comment puis-je faire apparaître automatiquement le bouton de la barre d'outils de l'extension Firefox?
Répondre
De https://developer.mozilla.org/En/Code_snippets:Toolbar#Adding_button_by_default -
Lorsque vous créez et déployez votre extension et inclure un bouton de la barre d'outils pour par superposant la toolbarpalette Personnaliser, il n'est pas disponible par défaut. L'utilisateur doit le faire glisser sur la barre d'outils. Le code suivant placera votre bouton sur la barre d'outils par défaut. Cela ne devrait être fait lors de la première exécution de votre add-on après l'installation si que si l'utilisateur décide d'enlever votre bouton, il n'apparaît plus chaque fois qu'ils démarrent l'application.
Remarques
Insérez le bouton par défaut une seule fois, à la première fois ou quand une mise à jour d'extension ajoute un nouveau bouton.
Veuillez ajouter votre bouton par défaut uniquement s'il ajoute une valeur réelle à l'utilisateur et sera un point d'entrée fréquent pour votre poste.
Vous ne devez pas insérer votre bouton de barre d'outils entre l'un des éléments suivants: le bouton combiné précédent/suivant, l'emplacement , le bouton d'arrêt ou le bouton de rechargement. Ces éléments ont comportements spéciaux lorsqu'ils sont placés l'un à côté de l'autre, et se rompent si séparés par un autre élément.
/**
* 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");
}
Nous utilisons le code suivant ....
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;
}
Nous utilisons le code suivant qui ajoutera le bouton (si elles existent déjà ailleurs dans le 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;
},
//...
Voici un petit extrait de script que j'écris qui ajoute un bouton à la barre d'outils Firefox pour la première fois votre extension fonctionne: Add your extension’s toolbar button to Firefox at first run
- 1. Comment faire pour installer automatiquement l'extension Firefox dans la barre de navigation?
- 2. Comment faire pour supprimer le bouton de fermeture d'une barre de légende MFC
- 3. Doutils ASP.NET
- 4. Comment faire pour capturer le bouton "Imprimer" de la barre de menu dans une macro
- 5. Comment rendre le bouton de la barre d'outils extensible?
- 6. Redimensionner automatiquement la barre de défilement/le curseur horizontal personnalisé?
- 7. Android: Comment afficher automatiquement la barre de défilement verticale?
- 8. comment désactiver firefox agrandir le bouton pour la fenêtre contextuelle?
- 9. Quelle devrait être la taille d'un bouton de barre d'outils Firefox?
- 10. Texte de survol à la souris créé à partir de la barre d'outils Firefox
- 11. Mozilla: Je veux faire apparaître ma propre boîte de dialogue sur le bouton de sauvegarde de fichier Télécharger Dilaog
- 12. Comment puis-je mettre un bouton "info" sur la barre de navigation de l'iPhone?
- 13. Comment faire apparaître le clavier dans Windows Mobile?
- 14. Pourquoi le premier bouton de la barre d'outils est-il automatiquement sélectionné lors du chargement de mon application gtk?
- 15. Comment faire apparaître les barres de défilement sur une TScrollBox?
- 16. Comment déboguer le problème de la barre de défilement horizontale?
- 17. Comment cacher le bouton 'Retour' de la barre de navigation sur iPhone?
- 18. Meilleure façon de faire apparaître un champ UITextField
- 19. Comment fonctionne le positionnement de la barre d'état XUL (en particulier firefox)?
- 20. Bouton d'édition indésirable dans ma barre de navigation?
- 21. Faire apparaître le clavier pour mon UIView personnalisé
- 22. Comment faire apparaître un fichier lors de l'ouverture de la solution Visual Studio
- 23. Comment faire pour supprimer le bouton SIP de Windows Mobile
- 24. Comment câbler le bouton Firefox Plug-in Options?
- 25. Comment puis-je faire apparaître un bouton dans l'en-tête d'un objet WPF TabItem à l'aide de liaisons?
- 26. Existe-t-il un moyen de faire apparaître un contrôleur de vue lorsque l'utilisateur change d'onglet?
- 27. Comment faire pour déplacer la barre de défilement par défaut de la fenêtre au-dessus de la barre d'état?
- 28. Bouton Fermer dans la barre de titre dans MFC
- 29. Comment puis-je faire apparaître une boîte de dialogue d'impression en utilisant Javascript?
- 30. Comment étendre automatiquement le contrôle de tabulation lorsque des éléments y sont ajoutés sans créer de barre de défilement?
Merci, fonctionne très bien. Vous ne savez pas pourquoi vous préférez définir une préférence de bouton ... n'est pas 'document.getElementById()' suffisant à cet effet? – spektom
aucune idée - je n'ai pas écrit le code, juste montré un exemple d'un de mon équipe. Nous avons depuis refactorisé entièrement pour Firefox 4 donc je ne ferais pas confiance à ceci maintenant ... – saschabeaumont
Je pense que cela empêchera le bouton d'ajouter à chaque fois, au cas où l'utilisateur voudrait le supprimer. getElementById ne le verra pas et l'ajoutera à chaque fois. –