firefox-addon Samouczek
Pierwsze kroki z firefox-addon
Szukaj…
Wprowadzenie
Dodatki:
Dodatki do przeglądarki Firefox są na ogół pogrupowane w rozszerzenia, a następnie „inne typy” dodatków do przeglądarki Firefox.
Rozszerzenia
Rozszerzenia umożliwiają dostosowanie Firefoksa poprzez dodanie lub modyfikację funkcjonalności Firefoksa. Niektóre rodzaje rzeczy, które można zrobić za pomocą rozszerzeń, to:
- Zmień wygląd określonych witryn internetowych, ich zawartość lub sposób interakcji z nimi.
- Dostosuj interfejs użytkownika Firefox
- Dodaj dodatkowe funkcje do Firefoksa
- Zmień sposób działania istniejących funkcji Firefoksa
Rozszerzenia Firefoksa są napisane przede wszystkim w JavaScript z dodatkiem niektórych API JavaScript.
Wycofywanie i usuwanie wszystkich typów rozszerzeń innych niż WebExtensions
Dodatki do Firefoksa, szczególnie rozszerzenia, są obecnie w ciągłym ruchu. Mozilla ogłosiła i potwierdziła, że wycofała wszystkie typy rozszerzeń Firefoksa, z wyjątkiem rozszerzeń WebExt, i że wszystkie rozszerzenia nie oparte na rozszerzeniach WebExtensions zostaną wyłączone w przeglądarce Firefox 57, która jest zaplanowana na 14.11.2017 .
Rodzaje rozszerzeń
Firefox ma cztery typy rozszerzeń (wszystkie są powszechnie nazywane dodatkami):
Rozszerzenia Web : W przyszłości rozszerzenia WebExtensions są jedynym typem rozszerzenia Firefox, który będzie obsługiwany. Te dodatki są opisane w pliku manifest.json . Ten interfejs API jest podobny do tego, który jest używany dla rozszerzeń Google Chrome. Te dodatki używają HTML i CSS oprócz Javascript. Chociaż Mozilla stwierdziła, że ten interfejs API jest przyszłością rozszerzeń Firefoksa, ten interfejs API jest wciąż w fazie rozwoju. Na razie prawdopodobnie najlepiej jest opracować i przetestować dodatek WebExtension za pomocą Firefox Developer Edition lub Firefox Nightly . Powinieneś także dokładnie zanotować, jakiej wersji Firefoksa wymaga wymagana funkcjonalność. Informacje te są zawarte w sekcji „Kompatybilność przeglądarki” na stronach dokumentacji MDN.
Rozszerzenia Web używają znacznie innego API niż pozostałe trzy typy rozszerzeń. Celowo nie ma możliwości korzystania z interfejsów innych typów dodatków.
Dodatkowy zestaw SDK : [ przestarzałe; zaplanowane do usunięcia ] Te dodatki są opisane w pliku package.json , który jest początkowo generowany przez uruchomienie
jpm init
. W tych rozszerzeniach częstorequire()
użycie funkcjirequire()
celu załadowania interfejsów API wysokiego poziomu lub niskiego poziomu w celu połączenia z Firefoksem. Te dodatki używają HTML i CSS oprócz Javascript. Obecnie dodatki te są pakowane w rozszerzenie bootstrapped, gdy są ładowane do testowania przezjpm run
lub skonsolidowane w pliku .xpi przezjpm xpi
celu dystrybucji (tj.jpm xpi
do AMO / Mozilla). Innymi słowy, są to rozszerzenia ładowane za pomocą opakowania SDK.Wydaje się, że Mozilla jest zobowiązana do dalszego wspierania rozszerzeń opartych na dodatkach SDK, o ile rozszerzenie to nie
require("chrome")
lub w inny sposób zależy od XUL , XPCOM i XBL .Większość rzeczy, które można wykonać w rozszerzeniu bootstrapped, można wykonać w dodatku opartym na SDK. Jednak wiele takich rzeczy omija zestaw SDK, który traci znaczną część korzyści wynikających z używania dodatkowego zestawu SDK.
Bootstrapped : [ przestarzałe; zaplanowane do usunięcia ] Te rozszerzenia są również powszechnie nazywane „restartami”, ponieważ były pierwszym typem rozszerzenia Mozilli, które nie wymagało ponownego uruchomienia aplikacji w celu załadowania / rozładowania dodatku. Jednak restartless jest deskryptorem tego, jak działają. Używanie „restartu” jako nazwy tego typu dodatku jest mylące, ponieważ zarówno dodatek SDK, jak i dodatki WebExtension również nie wymagają ponownego uruchomienia aplikacji po załadowaniu lub rozładowaniu dodatku. Z tego powodu istnieje tendencja do nieużywania „restartu” jako nazwy tego typu dodatków.
Te dodatki używają HTML i CSS oprócz Javascript. Wiele osób korzysta także z przeglądarki Firefox za pomocą XUL .
Te dodatki mają plik JavaScript o nazwie bootstrap.js, który musi zawierać punkty wejścia (funkcje), które są wywoływane w celu
startup()
dodatkówstartup()
,shutdown()
,install()
iuninstall()
.Te dodatki zawierają plik install.rdf , który opisuje dodatek. Zazwyczaj, ale nie zawsze, zawierają także plik chrome.manifest , który opisuje, w jaki sposób pliki i katalogi w rozszerzeniu odnoszą się do aplikacji Mozilla (np. Firefox).
Większość, ale nie wszystkie rzeczy, które można zrobić w rozszerzeniach nakładki / XUL / Legacy, można osiągnąć w dodatkach bootstrapped. Wszystko, co można zrobić w dodatku SDK, można wykonać w rozszerzeniu bootstrapped (rozszerzenia SDK dodatku są dodatkami bootstrap z niektórymi warstwami API opartymi na JavaScript).
Mozilla oświadczyła, że planuje wycofać „dodatki, które zależą od XUL , XPCOM i XBL ”. Chociaż nie wszystkie dodatki do ładowania początkowego zależą od tych technologii, istnieje tendencja do tego, by dodatki do ładowania początkowego działały na niższym poziomie niż dodatki SDK i dodatki WebExtension. Dlatego częściej korzystają z tych technologii. Chociaż niektórzy twierdzą, że wszystkie dodatki ładowane są planowo przestarzałe, nie jest to jasne. W końcu rozszerzenia SDK dodatków nie są przestarzałe (chyba że używają
require("chrome")
lub w inny sposób zależą od XUL, XPCOM lub XBL), a wszystkie rozszerzenia SDK dodatków są rozszerzeniami bootstrapowanymi, tylko z opakowaniem SDK .Nakładka / XUL / Legacy : [ przestarzałe; zaplanowane do usunięcia ] Te dodatki zawierają plik install.rdf , który opisuje dodatek i plik chrome.manifest opisujący, w jaki sposób pliki dodatku odnoszą się (np. do nakładki) na pliki aplikacji. Sposób działania dodatku z aplikacją jest całkowicie zależny od relacji opisanych w pliku chrome.manifest . Jedynymi wyjątkami od tego są kilka rzeczy, takich jak ikony rozszerzenia i plik opisujący opcje rozszerzenia wskazane w pliku install.rdf . Te rozszerzenia współdziałają z aplikacją (np. Firefox) na bardzo niskim poziomie. Powoduje to, że bardziej prawdopodobne jest, że się zepsują podczas wprowadzania zmian w aplikacji.
Te dodatki używają XUL, HTML i CSS oprócz Javascript. Niektórzy używają również XPCOM i XBL .
Wszystkie rozszerzenia Overlay / XUL / Legacy są planowane jako przestarzałe.
Inne typy dodatków do Firefoksa
Kiedy większość ludzi myśli o dodatkach do Firefoksa, myśli o opisanych wyżej rozszerzeniach. Istnieją jednak dodatkowe typy dodatków do przeglądarki Firefox:
- Motywy [ częściowo przestarzałe ] umożliwiają dostosowanie wyglądu przeglądarki Firefox. Przede wszystkim poprzez zapewnienie różnych reguł CSS do wszystkich części przeglądarki. „Kompletne motywy” są przestarzałe i planuje się je częściowo zastąpić nieistniejącym interfejsem .
- Dodatki mobilne są przeznaczone dla Firefoksa na Androida. Obecnie obsługiwane są wszystkie typy rozszerzeń Firefox, które są restartowane.
- Wtyczki wyszukiwarek służą do dodawania dodatkowych wyszukiwarek do paska wyszukiwania przeglądarki.
- Słowniki użytkownika pozwalają na sprawdzanie pisowni w dodatkowych językach.
- Pakiety językowe dodają dodatkowe języki do interfejsu użytkownika przeglądarki Firefox.
- Wtyczki są bibliotekami współdzielonymi do wyświetlania treści, których sama aplikacja nie może wyświetlać natywnie.
Ten „przykład” jest głównie kopiowany, z pewnymi modyfikacjami, od mojej, Makyena, odpowiedzi na pytanie dotyczące przepływu stosu .
Niektóre części tej zawartości zostały skopiowane, lub przynajmniej w oparciu o stronę dodatków w Mozilla Developer Network (MDN).
Zostało to pierwotnie opublikowane przez Makyena w sekcji „Uwagi” tagu firefox-addon . Następnie zmodyfikował go Ondřej Doněk , który usunął dodatkowe „za”. W pojedynczej edycji wykonanej przez nus został przeniesiony z „Uwagi” do przypiętego „przykładu” zatytułowanego „Wprowadzenie”. Niestety spowodowało to utratę przez system informacji o atrybucji.
Instalowanie tymczasowego dodatku
Aby przetestować opracowywany dodatek, prawdopodobnie będziesz chciał go tymczasowo zainstalować w przeglądarce Firefox. Możesz to zrobić, ładując go jako dodatek tymczasowy . Aby to zrobić:
- Przejdź do
about:debugging
- Kliknij „Załaduj tymczasowy dodatek”
- W selektorze plików przejdź do katalogu zawierającego pliki dodatkowe
- Wybierz dowolny plik w folderze
- Kliknij „Otwórz”
Poniższa animacja pokazuje ładowanie dodatku o nazwie „aaaaaaaaaaaaaaaaaaa - dodatek demonstracyjny” z about:debugging
a następnie dodatek pojawia się w about:addons
:
Jako dodatek tymczasowy możesz załadować rozpakowany dodatek (katalog zawierający wszystkie pliki dodatku, które chciałbyś spakować do pliku .xpi ) lub dodatek, który jest spakowany do pliku .xpi
archiwum .xpi
. Tymczasowe dodatki nie muszą być podpisywane . Tymczasowy dodatek pozostaje zainstalowany, dopóki nie zostanie ręcznie odinstalowany lub Firefox nie uruchomi się ponownie.
Dokumentacja Mozilli: tymczasowa instalacja w przeglądarce Firefox
Rozszerzenia internetowe
Rozszerzenia Web można ładować jako dodatki tymczasowe. Można to zrobić za pomocą plików dodatkowych rozpakowanych lub spakowanych w pliku xpi .
Dodatek SDK do przeglądarki Firefox
Nie można załadować rozszerzenia SDK dodatku Firefox jako tymczasowego dodatku bez uprzedniego spakowania go do pliku .xpi za pomocą jpm xpi
. Zasadniczo za pomocą narzędzia jpm run
przetestujesz swoje rozszerzenie SDK dla jpm run
Firefox.
Pliki, które są zazwyczaj edytowane dla rozszerzenia SDK Add-on, nie stanowią pełnego rozszerzenia bez niektórych dodatkowych funkcji owijania i tłumaczenia pliku package.json na plik install.rdf i ewentualnie plik chrome.manifest . Ten proces powoduje dodanie rozszerzenia SDK do rozszerzenia Bootstrap / Restartless, które jest zrozumiałe dla Firefoksa. Bez tego procesu Firefox nie będzie mógł załadować dodatku. Ten proces jest wykonywany przez jpm xpi
wyniku czego powstaje spakowany plik .xpi . Wykonywanie jpm run
również wykonuje ten proces, ale przechowuje powstałe pliki w tymczasowej lokalizacji i wywołuje Firefoksa z zainstalowanym dodatkiem.
Bootstrap / Restartless
Dodatki Bootstrap / Restartless można ładować jako dodatki tymczasowe. Można to zrobić za pomocą plików dodatkowych rozpakowanych lub spakowanych w pliku xpi .
Legacy / Overlay / XUL
Dodatków Legacy / Overlay / XUL nie można załadować jako dodatków tymczasowych.
Instalowanie niepodpisanych dodatków
Aby zainstalować rozszerzenie jako zwykły dodatek do wersji Firefox lub Beta wersji Firefox większej lub równej wersji 48, rozszerzenie musi być podpisane przez Mozillę . Rozszerzenie jest podpisywane przez przesłanie go do AMO . Po podpisaniu rozszerzenie można zainstalować w dowolnej obsługiwanej wersji przeglądarki Firefox. W przypadku wersji Firefoksa wcześniejszych niż wersja 43 rozszerzenia nie musiały być podpisywane przez Mozillę. Typy dodatków inne niż rozszerzenia nie muszą być podpisywane przez Mozillę.
Możesz instalować niepodpisane rozszerzenia jako zwykłe dodatki w innych wersjach Firefoksa (np. Firefox Developer Edition , Firefox Nightly , Unbranded Beta lub Unbranded Release ), ustawiając xpinstall.signatures.required
na false
w about:config
. Ustawienie tej opcji było również skuteczne w wydaniach i Beta Firefox w wersjach 43–48. Ustawienie tej opcji nie działa w wersjach Firefox i Beta wersji Firefox od wersji 48 i późniejszych.
Konieczność instalowania niepodpisanych dodatków podczas opracowywania dodatków została znacznie ograniczona dzięki dostępności rozszerzeń jako dodatków tymczasowych . Tymczasowe dodatki nie muszą być podpisywane i można je załadować do dowolnej bieżącej wersji przeglądarki Firefox. Jak sama nazwa wskazuje, podstawową wadą dodatków tymczasowych jest to, że są tymczasowe. Muszą być ponownie zainstalowane przy każdym uruchomieniu Firefoksa. Istnieją jednak przypadki użycia, w których lepiej zainstalować dodatek jako zwykły, ale niepodpisany, zamiast jako dodatek tymczasowy. Dodatek należy zainstalować jako niepodpisany, jeśli zachodzi potrzeba, aby dodatek pozostał zainstalowany nawet po ponownym uruchomieniu Firefoksa. Może to być pożądane z różnych powodów, w tym: długoterminowych testów użytkowania lub przetestowania działania dodatku podczas uruchamiania Firefoksa.
Instalowanie dodatków do programowania
Dodatki można zainstalować jako:
- Normalne dodatki, które są instalowane do momentu odinstalowania
- Tymczasowe dodatki (tylko rozszerzenia ): są instalowane tylko do momentu ponownego uruchomienia Firefoksa lub można je wcześniej odinstalować ręcznie.
- Używanie
jpm run
(tylko SDKjpm run
): Automatycznie uruchamia Firefoksa, używając tymczasowego profilu z załadowanym dodatkiem. - Korzystanie
web-ext run
(tylko rozszerzenia WebExt ): Automatycznie uruchamia Firefoksa przy użyciu tymczasowego profilu z dodatkiem załadowanym jako tymczasowy dodatek. Domyślnie monitoruje pliki rozszerzeń pod kątem zmian i automatycznie ładuje rozszerzenie po zmianie plików.
Normalne dodatki
Instalowanie spakowanych rozszerzeń (np. Pliku .xpi
) może polegać na przeciągnięciu i upuszczeniu do okna przeglądarki Firefox z profilem, w którym ma być zainstalowany. Można je również zainstalować bezpośrednio, pobierając rozszerzenie z AMO . W zależności od celu (jeden profil, wszystkie profile, wszyscy użytkownicy, system operacyjny itp.) Istnieją inne opcje instalacji rozszerzeń .
Te inne opcje obejmują różne katalogi spoza katalogu profilu, w którym można umieścić plik .xpi , aby zainstalować go dla wszystkich użytkowników określonej wersji Firefoksa lub wszystkich profili konkretnego użytkownika. W systemie Windows można również zainstalować rozszerzenie, dodając klucz do rejestru systemu Windows. Ogólnie rzecz biorąc, te inne katalogi nie są katalogami, w których można zainstalować dodatek, w którym obecnie piszesz. Można ich jednak użyć, aby upewnić się, że masz dodatki, których używasz do obsługi testowania / programowania załadowanego w dowolnym profilu Firefox lub używanej wersji Firefoksa. Na przykład, umieszczając plik .xpi w <Firefox install directory>/browser/extensions
, możesz mieć rozszerzenie dostępne nawet w tymczasowym profilu utworzonym przez jpm run
(używane do testowania rozszerzeń opartych na jpm run
Firefox SDK).
W celu programowania / testowania rozszerzenie może znajdować się w dowolnym katalogu na dysku lokalnym za pomocą pliku proxy rozszerzenia Firefox (utwórz plik o nazwie <em:id>
(w install.rdf dla Bootstrap / Restartless i Overlay / Starsze) w katalogu rozszerzeń profilu zawierającym jeden wiersz z pełną ścieżką do katalogu zawierającego pliki rozszerzenia). Rozszerzenia zainstalowane w ten sposób prawie zawsze będą niepodpisane (patrz poniżej). Dlatego ta metoda nie jest bardzo przydatna, jeśli chcesz zainstalować rozszerzenie w wersji Firefox lub Beta przeglądarki Firefox.
Ograniczenia dotyczące instalowania normalnych dodatków: podpisywanie dodatków
Aby zainstalować rozszerzenie jako zwykły dodatek do wersji Firefox lub Beta wersji Firefox większej lub równej wersji 48, rozszerzenie musi być podpisane przez Mozillę . Rozszerzenie jest podpisywane przez przesłanie go do AMO . Po podpisaniu rozszerzenie można zainstalować w dowolnej obsługiwanej wersji przeglądarki Firefox. W przypadku wersji Firefoksa wcześniejszych niż wersja 43 rozszerzenia nie musiały być podpisywane przez Mozillę. Typy dodatków inne niż rozszerzenia nie muszą być podpisywane przez Mozillę.
Możesz instalować niepodpisane rozszerzenia jako zwykłe dodatki w innych wersjach Firefoksa (np. Firefox Developer Edition , Firefox Nightly , Unbranded Beta lub Unbranded Release ), ustawiając xpinstall.signatures.required
na false
w about:config
. Ustawienie tej opcji było również skuteczne w wydaniach i Beta Firefox w wersjach 43–48. Ustawienie tej opcji nie działa w wersjach Firefox i Beta wersji Firefox od wersji 48 i późniejszych.
Można jednak całkowicie wyłączyć sprawdzanie podpisów dodatków w przeglądarce Firefox we wszystkich wersjach, w tym w wersji. Odpowiedź na pytanie o przepełnienie stosu Jak mogę wyłączyć sprawdzanie podpisów dla dodatków Firefox? opisuje, jak to zrobić.
Konieczność instalowania niepodpisanych dodatków do celów programistycznych została znacznie ograniczona dzięki dostępności rozszerzeń jako dodatków tymczasowych . Tymczasowe dodatki nie muszą być podpisywane i można je załadować do dowolnej bieżącej wersji przeglądarki Firefox. Jak sama nazwa wskazuje, podstawową wadą dodatków tymczasowych jest to, że są tymczasowe. Muszą być ponownie zainstalowane przy każdym uruchomieniu Firefoksa. Istnieją jednak przypadki użycia, w których lepiej zainstalować dodatek jako zwykły, ale niepodpisany, zamiast jako dodatek tymczasowy. Dodatek należy zainstalować jako niepodpisany, jeśli zachodzi potrzeba, aby dodatek pozostał zainstalowany nawet po ponownym uruchomieniu Firefoksa. Może to być pożądane z różnych powodów, w tym: długoterminowych testów użytkowania lub przetestowania działania dodatku podczas uruchamiania Firefoksa.
Tymczasowe dodatki ( tylko rozszerzenia )
Rozszerzenia WebExt, rozszerzenia oparte na dodatkach SDK do Firefoksa oraz rozszerzenia Restartless / Bootstrap mogą być instalowane jako dodatki tymczasowe z about:debugging
. Rozszerzenia można ładować jako dodatki tymczasowe w dowolnej bieżącej wersji Firefoksa. Tymczasowe dodatki nie muszą być podpisywane i można je ładować z rozpakowanego (katalogu z plikami) lub spakowanego (np. Pliku .xpi ).
Aby uzyskać szczegółowe informacje na temat tymczasowego instalowania rozszerzeń, zobacz Instalowanie tymczasowego dodatku .