Utworzono rozszerzenie firefox, które składa się z przycisku paska narzędzi. Jak mogę to ustawić, aby po zainstalowaniu mojego rozszerzenia przycisk automatycznie pojawił się na głównym pasku narzędzi. Nie chcę, aby moi użytkownicy musieli przejść do menu paska narzędzi dostosowywania i przeciągnąć mój przycisk.Jak mogę uczynić mój przycisk paska narzędzi rozszerzenia Firefox pojawiać się automatycznie?
Odpowiedz
Od https://developer.mozilla.org/En/Code_snippets:Toolbar#Adding_button_by_default -
Po utworzeniu i wdrożyć wewnętrzny zawierać przycisk paska narzędzi dla niego przez nałożenie toolbarpalette Dostosuj, że nie jest dostępna domyślnie. Użytkownik musi przeciągnąć go na pasek narzędzi. Poniższy kod umieści domyślnie Twój przycisk na pasku narzędzi. To powinno być zrobione tylko przy pierwszym uruchomieniu twojego dodatku po instalacji, więc jeśli użytkownik zdecyduje się usunąć swój przycisk, ponownie nie wyświetla się za każdym razem, gdy uruchamia aplikację.
Uwagi
Włóż tylko raz, przy pierwszym uruchomieniu swój przycisk domyślnie, lub gdy aktualizacja rozszerzenie dodaje nowy przycisk.
Przycisk należy dodawać domyślnie tylko wtedy, gdy dodaje rzeczywistą wartość do użytkownika i będzie częstym punktem wejścia do numeru wewnętrznego.
Nie można wstawiać przycisku paska narzędzi między jednym z następujących elementów: połączonym przyciskiem w przód/w tył, polem lokalizacji , dnem stopu lub przyciskiem ponownego ładowania. Elementy te mają specjalne zachowania, gdy są umieszczone obok siebie i ulegną uszkodzeniu, jeśli zostaną rozdzielone innym elementem.
/**
* 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");
}
Używamy następujący kod ....
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;
}
Używamy następujący kod, który doda przycisk (jeśli istnieje już gdzieś indziej w barze).
//...
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;
},
//...
Oto mały fragment Piszę skrypt, który dodaje przycisk do paska narzędzi przeglądarki Firefox po raz pierwszy swoją przedłużenie zjazdowe: Add your extension’s toolbar button to Firefox at first run
- 1. Przycisk strony domowej paska narzędzi Android nie wyświetlający się
- 2. CKEDITOR - Przycisk paska narzędzi z tekstem
- 3. Jak mogę uzyskać kliknięcie przycisku Kliknij przycisk paska narzędzi, klikając przycisk TabbarItem?
- 4. Przycisk paska narzędzi Firebug jest zawsze wyświetlany dezaktywowany od czasu Firefox 51.0.1
- 5. Jak dodać przycisk po prawej stronie paska narzędzi?
- 6. Czy mogę używać CKEditor bez paska narzędzi?
- 7. Pobierz aktualny adres URL strony z rozszerzenia paska bocznego firefox
- 8. Przycisk tła paska przycisków
- 9. Zwijanie paska narzędzi Wyłączanie i ukrywanie paska narzędzi podczas przewijania
- 10. Jak mogę uczynić tę metodę rozszerzenia bardziej ogólną?
- 11. Jak mogę uczynić mój <input type = "submit" /> obraz?
- 12. Zmiana paska narzędzi i zwijanie paska narzędzi paska narzędzi Programowo przewijanie flag
- 13. Jak włączyć/wyłączyć elementy paska narzędzi?
- 14. Jak mogę uczynić mój ArrayAdapter zgodny z wzorcem ViewHolder?
- 15. "Przycisk" za pomocą paska narzędzi getSupportActionbar i appcompat v7
- 16. Jak mogę dodać przycisk paska narzędzi, aby uruchomić plik .exe z Visual Studio 2010?
- 17. Pasek narzędzi - dodaj przycisk w górę
- 18. Jak mogę wdrożyć wyróżnione ikony paska narzędzi w Delphi?
- 19. Dodawanie paska narzędzi uikeyboard
- 20. Jak uczynić filtr paska narzędzi w przypadku JQGrid niewrażliwym i ustawić w nim uchwyt miejsca?
- 21. Dostosowywanie paska narzędzi WYSIHTML5
- 22. Podziałka paska zakładek paska narzędzi Android
- 23. Definiowanie niestandardowego paska narzędzi CKEditor
- 24. Jak zadeklarować rozszerzenie paska narzędzi/paska czynności na Androidzie Lollipop?
- 25. Zwijanie paska narzędzi Jak Google Play Store
- 26. Niestandardowa ikona paska narzędzi Android
- 27. Jak mogę uczynić mój plik VSIX kompatybilnym z VS11 i VS2010?
- 28. Dostosowanie kąta działania paska narzędzi
- 29. android pasek narzędzi przycisk nawigacyjny id
- 30. iPhone: Ukrywanie/pokazywanie paska narzędzi
Dzięki, działa bez zarzutu. Nie wiesz, dlaczego preferujesz ustawienie specjalne dla obecności przycisku ... nie jest wystarczająca do tego funkcja 'document.getElementById()'? – spektom
nie mam pojęcia - nie napisałem kodu, tylko pokazałem przykład z jednego z mojego zespołu. Odtąd całkowicie refaktoryzowaliśmy Firefoksa 4, więc nie ufałbym teraz ... – saschabeaumont
Myślę, że to uniemożliwi dodanie przycisku za każdym razem, na wypadek gdyby użytkownik chciał go usunąć. getElementById nie zobaczy go i doda go za każdym razem. –