--- title: Aktualizacja rozszerzeń dla Firefoksa 3 slug: Aktualizacja_rozszerzeń_dla_Firefoksa_3 tags: - Firefox 3 ---
W tym artykule znajdują się informacje dla deweloperów chcących dostosować swoje rozszerzenia do pracy w Firefox 3.
Zanim przejdziemy dalej, chcemy przedstawić jedną pomocną wskazówkę: jeśli jedyną zmianą, której wymaga twoje rozszerzenie, jest zmiana pola maxVersion
w jego manifeście instalacji, i przechowujesz rozszerzenie na addons.mozilla.org, nie potrzebujesz teraz wgrywać nowej wersji swojego rozszerzenia. Po prostu użyj Developer Control Panel na AMO, by ustawić maxVersion
. W ten sposób możesz uniknąć konieczności ponownego zrecenzowania rozszerzenia.
Pierwszym krokiem - dla wielu rozszerzeń jedynym, jaki będzie potrzebny - jest aktualizacja pliku manifestu instalacji, install.rdf
.
Wystarczy znaleźć linię wskazującą maksymalną kompatybilną wersję Firefoksa (która dla Firefoksa 2, może wyglądać podobnie jak linia poniżej):
<em:maxVersion>2.0.0.*</em:maxVersion>
Zmieniamy ją, wskazując kompatybilność z Firefoksem w wersji 3:
<em:maxVersion>3.0.*</em:maxVersion>
Następnie ponownie instalujemy rozszerzenie.
Zauważ, że program Firefox 3 nie potrzebuje dodatkowego ".0" w numerze wersji, tak więc zamiast "3.0.0.* możesz używać tylko "3.0.*".
maxVersion
3.0.*
zanim Firefox 3 w wersji RC nie zostanie wypuszczony. W okresie Firefox 3 Beta powinieneś używać3.0b3
jako maxVersion
.Pewne zmiany API nadal będą wprowadzane. Zmiany te prawdopodobnie zmienią działanie niektórych rodzajów rozszerzeń. Nadal pracujemy nad kompilacją kompletnej listy tychże zmian.
Install.js
zamiast manifestu instalacyjnego (ang. install manifest), musisz natychmiast przekompilować swoje rozszerzenia do manifestu instalacyjnego. Firefox 3 nie obsługuje już skryptów install.js
w plikach XPI.Firefox 3 obsługuje nowe własności w manifeście instalacji do wskazujących zlokalizowanych opisów. Stare metody nadal będą działać, jednakże nowe pozwolą Firefoksowi zebrać lokalizacje nawet gdy opcja dodatków jest wyłączona i oczekuje na instalację. Zobacz artykuł nt. lokalizacji opisu rozszerzenia, aby uzyskać więcej informacji.
Jeśli trzymasz rozszerzenie na własnym serwerze i nie jest to bezpieczny dostawca hostingu tak jak na przykład addons.mozilla.org to musisz zapewnić bezpieczną metodę aktualizacji Twojego dodatku. This will either involve hosting your updates on an SSL website, or using cryptographic keys to sign the update information. Przeczytaj artykuł Securing Updates, aby zdobyć więcej informacji.
Kilka API zostało zmienione w znaczny sposób. Najbardziej zmienione, które najprawdopodobniej będą miały wpływ na duża liczbę rozszerzeń, to:
Przed włączeniem węzłów pochodzących z zewnętrznych dokumentów do bieżącego dokumentu konieczne jest ich sklonowanie za
pomocą metody document.importNode()
(lub zaadaptowanie przy użyciu metody document.adoptNode()
). Więcej informacji na temat własności
Node.ownerDocument
znajduje się na liście najczęściej zadawanych pytań na temat
DOM w witrynie W3C.
Aktualnie Firefox nie wymusza tej reguły (robił to przez pewien czas podczas cykli rozwojowych Firefoksa 3, ale zbyt dużo stron przestawało działać po wymuszeniu tej reguły). Zachęcamy autorów stron do poprawienia ich kodu dla lepszej kompatybilności w przyszłości.
Jeśli twoje rozszerzenie w jakikolwiek sposób dotyczy listy Zakładek lub Historii, będzie ono wymagało dodatkowych zmian, aby poprawnie działać z Firefoksem 3. Stare API dla tych list zostało zastąpione nową architekturą Miejsca. Zobacz Migration Guide for Places, by uzyskać szczegóły aktualizacji.
API Menedżera pobierania zmieniło się nieznacznie ze względu na przejście z RDF do przechowywania danych za pomocą Storage API. To powinno być dość łatwe do przejścia. Interfejs API do monitorowania postępu pobierania został zmieniony w celu wspierania wielu czytników Menedżera pobierania. W celu zdobycia większej liczby informacji, idź do nsIDownloadManager
, nsIDownloadProgressListener
i Monitoring downloads.
Jeśli twoje rozszerzenie wykorzystuje Menadżer haseł do logowania użytkownika, konieczne będzie dostosowanie się do nowego API Menedżera logowania.
nsILoginInfo
nsILoginManager
XUL Popup system został mocno zmodyfikowany w Firefoksie 3. Popup System zawiera główne menu, menu kontekstowego i pop-panele. Przewodnik za pomocą Popups została utworzona, dowiedzą się jak działa system. Jedną rzeczą jest, aby zapamiętać, że using Popups popup.
showPopup
popup.został wycofany na rzecz nowych
i openPopup
popup.
.openPopupAtScreen
Następujące interfejsy zostały usunięte z Gecko 1.9. Jeśli rozszerzenie korzysta z któregoś z podanych, musisz zaaktualizować kod:
nsIDOMPaintListener
nsIDOMScrollListener
nsIDOMMutationListener
nsIDOMPageTransitionListener
nsICloseAllWindows
(zobacz błąd 386200)Nastąpiły niewielkie zmiany w chrome, które mogą wymagać zmian w kodzie. Nowy vbox
został dodany, tak zwany " bottombox przeglądarki", który załącza się w pasku górnym i pasku stanu na dole okna przeglądarki. Chociaż nie ma to wpływu na wygląd wyświetlacza, może wpłynąć na rozszerzenie czy chrome nakładki w stosunku do tych elementów.
Na przykład, jeśli wcześniej pokrył niektóre chrome sprzed pasku stanu, w taki sposób:
<window id="main-window"> <something insertbefore="status-bar" /> </window>
Teraz nakładka powinna wyglądać w taki sposób:
<vbox id="browser-bottombox"> <something insertbefore="status-bar" /> </vbox>
nsIAboutModule
są obecnie wymagane w celu wsparcia getURIFlags
metody. Zobacz nsIAboutModule.idl dla dokumentacji.Dotyczy to rozszerzenia, które zapewniają nowe URI.(błąd 337746)
element nie jest już częścią "narzędzi" (błąd 339964). Oznacza to, że ten element nie jest już dostępny w aplikacjach XUL i rozszerzeniach. To nadal jest używany w oknie głównym programu Firefox (browser.xul).
i ewentualnie do gwintowania związanych interfejsów muszą być udokumentowane.
<?xml-stylesheet ?>
w Twoim plików XUL, powinnismy być świadomi zmian dokonanych w błąd 319654:
document.firstChild
is no longer guaranteed to be the root element. If you need to get the root document in your script, use document.documentElement
instead.<?xml-stylesheet ?>
and <?xul-overlay ?>
processing instructions now have no effect outside the document prolog.window.addEventListener("load", myFunc, true)
is not fired when loading web content (browser page loads). This is due to błąd 296639 which changes the way inner and outer windows communicate. The simple fix here is to use gBrowser.addEventListener("load", myFunc, true)
as described here and works in Firefox 2 as well.content.window.getSelection()
gives an object (which can be converted to a string by toString()
), unlike the now deprecated content.document.getSelection()
which returns a stringevent.preventBubble()
was deprecated in Firefox 2 and has been removed in Firefox 3. Use event.stopPropagation()
, which also works in Firefox 2 as well.