1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
---
title: Aktualizacja rozszerzeń dla Firefoksa 3
slug: Aktualizacja_rozszerzeń_dla_Firefoksa_3
tags:
- Firefox 3
---
<p>W tym artykule znajdują się informacje dla deweloperów chcących dostosować swoje rozszerzenia do pracy w Firefox 3.</p>
<p>Zanim przejdziemy dalej, chcemy przedstawić jedną pomocną wskazówkę: jeśli jedyną zmianą, której wymaga twoje rozszerzenie, jest zmiana pola <code>maxVersion</code> w jego manifeście instalacji, i przechowujesz rozszerzenie na <a class="link-https" href="https://addons.mozilla.org">addons.mozilla.org</a>, nie potrzebujesz teraz wgrywać nowej wersji swojego rozszerzenia. Po prostu użyj Developer Control Panel na AMO, by ustawić <code>maxVersion</code>. W ten sposób możesz uniknąć konieczności ponownego zrecenzowania rozszerzenia.</p>
<h3 id="Krok_1_Aktualizacja_manifestu_instalacji" name="Krok_1:_Aktualizacja_manifestu_instalacji">Krok 1: Zaaktualizuj manifest instalacji</h3>
<p>Pierwszym krokiem - dla wielu rozszerzeń jedynym, jaki będzie potrzebny - jest aktualizacja pliku <a href="/pl/Manifesty_Instalacji" title="pl/Manifesty_Instalacji">manifestu instalacji</a>, <code>install.rdf</code>.</p>
<p>Wystarczy znaleźć linię wskazującą maksymalną kompatybilną wersję Firefoksa (która dla Firefoksa 2, może wyglądać podobnie jak linia poniżej):</p>
<pre class="eval"> <span class="nowiki"><em:maxVersion>2.0.0.*</em:maxVersion></span>
</pre>
<p>Zmieniamy ją, wskazując kompatybilność z Firefoksem w wersji 3:</p>
<pre class="eval"> <span class="nowiki"><em:maxVersion>3.0.*</em:maxVersion></span>
</pre>
<p>Następnie ponownie instalujemy rozszerzenie.</p>
<p>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.*".</p>
<div class="blockIndicator note"><strong>Uwaga:</strong> Zauważ, że Firefox 3 nadal zmienia się. Te zmiany mogą spowodować nieprawidłowe działanie niektórych rozszerzeń, więc nie powinieneś udostępniać użytkownikom rozszerzenia z <code>maxVersion</code> <code>3.0.*</code> zanim Firefox 3 w wersji RC nie zostanie wypuszczony. W okresie Firefox 3 Beta powinieneś używać<code>3.0b3</code> jako <code>maxVersion</code>.</div>
<p>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.</p>
<div class="blockIndicator note"><strong>Uwaga:</strong> Jeżeli twoje rozszerzenia nadal używają skryptu <code><a href='"pl/Install.js"'>Install.js</a></code> zamiast manifestu instalacyjnego (ang. install manifest), musisz natychmiast przekompilować swoje rozszerzenia do manifestu instalacyjnego. Firefox 3 nie obsługuje już skryptów <code>install.js</code> w plikach XPI.</div>
<h4 id="Dodawanie_lokalizacji_do_manifestu_instalacji" name="Dodawanie_lokalizacji_do_manifestu_instalacji">Dodawanie lokalizacji do manifestu instalacji</h4>
<p>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. <a href="/pl/Lokalizacja_opisu_rozszerzenia" title="pl/Lokalizacja_opisu_rozszerzenia">lokalizacji opisu rozszerzenia</a>, aby uzyskać więcej informacji.</p>
<h3 id="Krok_2_Upewnij_si.C4.99.2C_.C5.BCe_dostarczasz_bezpiecznych_aktualizacji" name="Krok_2:_Upewnij_si.C4.99.2C_.C5.BCe_dostarczasz_bezpiecznych_aktualizacji">Krok 2: Upewnij się, że dostarczasz bezpiecznych aktualizacji</h3>
<p>Jeśli trzymasz rozszerzenie na własnym serwerze i nie jest to bezpieczny dostawca hostingu tak jak na przykład <a class="link-https" href="https://addons.mozilla.org">addons.mozilla.org</a> 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ł <a href="/pl/Wersjonowanie_rozszerzenia,_aktualizacja_i_kompatybilno%C5%9B%C4%87#Securing_Updates" title="pl/Wersjonowanie_rozszerzenia,_aktualizacja_i_kompatybilność#Securing_Updates">Securing Updates</a>, aby zdobyć więcej informacji.</p>
<h3 id="Krok_3_Uporaj_si.C4.99_ze_zmianami_w_API" name="Krok_3:_Uporaj_si.C4.99_ze_zmianami_w_API">Krok 3: Uporaj się ze zmianami w API</h3>
<p>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:</p>
<h4 id="DOM" name="DOM">DOM</h4>
<p>Przed włączeniem węzłów pochodzących z zewnętrznych dokumentów do bieżącego dokumentu konieczne jest ich sklonowanie za
pomocą metody <a href="/pl/docs/Web/API/Document/importNode" title="Tworzy kopię węzła z zewnętrznego dokumentu, która może być umieszczona wewnątrz bieżącego dokumentu."><code>document.importNode()</code></a> (lub zaadaptowanie przy użyciu metody <a class="new" href="/pl/docs/Web/API/Document/adoptNode" rel="nofollow" title="The documentation about this has not yet been written; please consider contributing!"><code>document.adoptNode()</code></a>). Więcej informacji na temat własności
<a class="new" href="/pl/docs/Web/API/Node/ownerDocument" rel="nofollow" title="The documentation about this has not yet been written; please consider contributing!"><code>Node.ownerDocument</code></a> znajduje się na liście najczęściej zadawanych pytań na <a class="external" href="http://www.w3.org/DOM/faq.html#ownerdoc" rel="noopener">temat
DOM w witrynie W3C</a>.</p>
<p>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.</p>
<h4 id="Zak.C5.82adki__Historia" name="Zak.C5.82adki_&_Historia">Zakładki & Historia</h4>
<p>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ą <a href="/pl/Miejsca" title="pl/Miejsca">Miejsca</a>. Zobacz <a href="/pl/Places/Migration_Guide" title="pl/Places/Migration_Guide">Migration Guide for Places</a>, by uzyskać szczegóły aktualizacji.</p>
<h4 id="Menad.C5.BCer_Pobierania" name="Menad.C5.BCer_Pobierania">Menadżer pobierania</h4>
<p>API Menedżera pobierania zmieniło się nieznacznie ze względu na przejście z RDF do przechowywania danych za pomocą <a href="/pl/Storage" title="pl/Storage">Storage</a> 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 <code><a href="/pl/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDownloadManager" title="">nsIDownloadManager</a></code>, <code><a href="/pl/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDownloadProgressListener" title="">nsIDownloadProgressListener</a></code> i <a href="/pl/Monitoring_downloads" title="pl/Monitoring_downloads">Monitoring downloads</a>.</p>
<h4 id="Mened.C5.BCer_hase.C5.82" name="Mened.C5.BCer_hase.C5.82">Menadżer haseł</h4>
<p>Jeśli twoje rozszerzenie wykorzystuje Menadżer haseł do logowania użytkownika, konieczne będzie dostosowanie się do nowego API Menedżera logowania.</p>
<ul>
<li>Artykuł <a href="/pl/Using_nsILoginManager" title="pl/Using_nsILoginManager">Using nsILoginManager</a> zawiera przykłady w jaki sposób należy zapisać rozszerzenie do pracy zarówno z Menadżerem haseł jak i Menadżerem logowania, więc będzie działał zarówno z Firefoksa 3 jak i ze starszymi wersjami.</li>
<li><code><a href="/pl/NsILoginInfo" title="pl/NsILoginInfo">nsILoginInfo</a></code></li>
<li><code><a href="/pl/NsILoginManager" title="pl/NsILoginManager">nsILoginManager</a></code></li>
</ul>
<h4 id="Popups_.28menu.2C_menu_kontekstowe.2C_Podpowiedzi_i_paneli.29" name="Popups_.28menu.2C_menu_kontekstowe.2C_Podpowiedzi_i_paneli.29">Popups (menu, menu kontekstowe, podpowiedzi i paneli)</h4>
<p>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 <a href="/pl/XUL/PopupGuide" title="pl/XUL/PopupGuide">using Popups</a> <code>popup.<span id="m-showPopup"><code><a href="https://developer.mozilla.org/pl/docs/Mozilla/Tech/XUL/Metoda/showPopup">showPopup</a></code></span></code> <code>popup.został wycofany na rzecz nowych<span id="m-openPopup"><code><a href="https://developer.mozilla.org/pl/docs/Mozilla/Tech/XUL/Metoda/openPopup">openPopup</a></code></span></code> i <code>popup.<span id="m-openPopupAtScreen"><code><a href="https://developer.mozilla.org/pl/docs/Mozilla/Tech/XUL/Metoda/openPopupAtScreen">openPopupAtScreen</a></code></span></code>.</p>
<h4 id="Removed_interfaces" name="Removed_interfaces">Usunięte interfejsy</h4>
<p>Następujące interfejsy zostały usunięte z Gecko 1.9. Jeśli rozszerzenie korzysta z któregoś z podanych, musisz zaaktualizować kod:</p>
<ul>
<li><code>nsIDOMPaintListener</code></li>
<li><code>nsIDOMScrollListener</code></li>
<li><code>nsIDOMMutationListener</code></li>
<li><code>nsIDOMPageTransitionListener</code></li>
<li><code>nsICloseAllWindows</code> (zobacz <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=386200" title='FIXED: SeaMonkey only: no "view cert button" in untrusted cert error dialog'>błąd 386200</a>)</li>
</ul>
<h3 id="Krok_4_kilka_istotnych_zmian_chrom" name="Krok_4:_kilka_istotnych_zmian_chrom">Krok 4: Kilka istotnych zmian chrome</h3>
<p>Nastąpiły niewielkie zmiany w chrome, które mogą wymagać zmian w kodzie. Nowy <code>vbox</code> 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.</p>
<p>Na przykład, jeśli wcześniej pokrył niektóre chrome sprzed pasku stanu, w taki sposób:</p>
<pre><window id="main-window">
<something insertbefore="status-bar" />
</window>
</pre>
<p><br>
Teraz nakładka powinna wyglądać w taki sposób:</p>
<pre><vbox id="browser-bottombox">
<something insertbefore="status-bar" />
</vbox>
</pre>
<div class="blockIndicator note"><strong>Uwaga:</strong> Zmiana została wprowadzona w Firefox w wersjach beta 3 i 4 pre-beta 4 nightlies.</div>
<h3 id="Inne_zmiany" name="Inne_zmiany">Inne zmiany</h3>
<ul>
<li>Implementacje <code><a href="/pl/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAboutModule" title="">nsIAboutModule</a></code> są obecnie wymagane w celu wsparcia <code>getURIFlags</code> metody. Zobacz <a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/protocol/about/public/nsIAboutModule.idl" rel="custom">nsIAboutModule.idl</a> dla dokumentacji.</li>
</ul>
<p>Dotyczy to rozszerzenia, które zapewniają nowe URI.(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=337746" title='FIXED: [FIX]Move "safe about" hardcoding out of security manager'>błąd 337746</a>)</p>
<ul>
<li><code><a href="/pl/docs/Mozilla/Tech/XUL/tabbrowser" title="tabbrowser">tabbrowser</a></code></li>
</ul>
<p>element nie jest już częścią "narzędzi" (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=339964" title="FIXED: move tabbrowser.xml out of mozilla/toolkit and into mozilla/browser">błąd 339964</a>). 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).</p>
<ul>
<li>Zmiany w: <a href="/pl/NsISupports_proxies" title="pl/NsISupports_proxies">nsISupports proxies</a></li>
</ul>
<p>i ewentualnie do gwintowania związanych interfejsów muszą być udokumentowane.</p>
<ul>
<li>Jeśli korzystasz z instrukcji przetwarzania XML, takich jak<code><?xml-stylesheet ?></code> w Twoim plików XUL, powinnismy być świadomi zmian dokonanych w <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=319654" title="FIXED: Processing instructions in XUL are not added to the content model">błąd 319654</a>:
<ol>
<li>XML PIs are now added to a XUL document's DOM. This means <a href="/pl/docs/Web/API/Document/firstChild" title="document.firstChild zwraca pierwszy węzeł z listy bezpośrednich dzieci dokumentu."><code>document.firstChild</code></a> is no longer guaranteed to be the root element. If you need to get the root document in your script, use <a href="/pl/docs/Web/API/Document/documentElement" title="Tylko do odczytu"><code>document.documentElement</code></a> instead.</li>
<li><code><?xml-stylesheet ?></code> and <code><?xul-overlay ?></code> processing instructions now have no effect outside the document prolog.</li>
</ol>
</li>
<li><code>window.addEventListener("load", myFunc, true)</code> is not fired when loading web content (browser page loads). This is due to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=296639" title="FIXED: Split windows into an inner and outer object">błąd 296639</a> which changes the way inner and outer windows communicate. The simple fix here is to use <code>gBrowser.addEventListener("load", myFunc, true)</code> as described <a href="/pl/Code_snippets/Tabbed_browser#Detecting_page_load" title="pl/Code_snippets/Tabbed_browser#Detecting_page_load">here</a> and works in Firefox 2 as well.</li>
<li><code>content.window.getSelection()</code> gives an object (which can be converted to a string by <code>toString()</code>), unlike the now deprecated <code>content.document.getSelection()</code> which returns a string</li>
<li><code>event.preventBubble()</code> was deprecated in Firefox 2 and has been removed in Firefox 3. Use <a href="/pl/DOM/event.stopPropagation" title="pl/DOM/event.stopPropagation"><code>event.stopPropagation()</code></a>, which also works in Firefox 2 as well.</li>
</ul>
|