aboutsummaryrefslogtreecommitdiff
path: root/files/ko/updating_extensions_for_firefox_3/index.html
blob: 82531182f481099917f8deb9343177655b68d8fa (plain)
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
---
title: Updating extensions for Firefox 3
slug: Updating_extensions_for_Firefox_3
tags:
  - Firefox 3
translation_of: Mozilla/Firefox/Releases/3/Updating_extensions
---
<div class="blockIndicator draft">
    <p><strong>초안</strong><br>
    이 문서는 작성중입니다.</p>

</div>

<p>이 글은 기존에 작성한 확장 기능이 Firefox 3에서도 잘 작동할 수 있게 업데이트하기 원하는 개발자들에게 유용한 정보를 제공합니다.</p>

<p>진행하기 앞서 유용한 힌트를 드리겠습니다. 여러분이 작성한 확장기능이 install manifest의 <code>maxVersion</code> 값만 수정하면 되고 <a class="link-https" href="https://addons.mozilla.org">addons.mozilla.org</a> 에서 제공되고 있다면, 새로운 버전의 확장기능을 업로드할 필요가 없습니다! 그냥 AMO에 있는 Developer Control Panel을 사용해서 <code>maxVersion</code> 을 수정하면 됩니다. 이렇게 하면 여러분의 확장기능이 다시 리뷰되는 것을 막을 수 있습니다.</p>

<h3 id="1.EB.8B.A8.EA.B3.84_install_manifest_.EC.88.98.EC.A0.95" name="1.EB.8B.A8.EA.B3.84:_install_manifest_.EC.88.98.EC.A0.95">1단계: install manifest 수정</h3>

<p>첫 번째 단계(아마 대부분의 확장기능이 이 단계만 거치면 될 것 같습니다)는 <a href="ko/Install_Manifests">install manifest</a> 파일인 install.rdf를 Firefox 3과 호환되도록 수정하는 것입니다.</p>

<p>먼저 호환 가능한 Firefox의 최고 버전을 나타내는 라인을 찾습니다(Firefox 2에서는 다음과 같을 것입니다).</p>

<pre class="eval"> <span class="nowiki">&lt;em:maxVersion&gt;2.0.*&lt;/em:maxVersion&gt;</span>
</pre>

<p>이 라인을 Firefox 3과 호환되도록 수정하세요.</p>

<pre class="eval"> <span class="nowiki">&lt;em:maxVersion&gt;3.0.*&lt;/em:maxVersion&gt;</span>
</pre>

<p>그리고 확장 기능을 다시 설치하세요.</p>

<p>Firefox 3에서는 버전 번호의 마지막 ".0"이 사용되지 않으므로, "3.0.0.*" 대신 "3.0.*"으로 사용하면 된다는 점을 기억하세요.</p>

<div class="blockIndicator note"><strong>주의:</strong> 현재 시점에서 Firefox 3가 계속적으로 변경이 있을것으로 생각됩니다. 이러한 변화들로 인해 어떤 확장기능들은 제대로 실행되지 않을 수도 있으므로 Firefox 3 release candidate 버전이 출시되기 전까지는 <code>maxVersion</code><code>3.0.*</code>인 확장기능을 배포하지 않는 것이 좋습니다. Firefox 3 Beta 기간동안에는 <code>maxVersion</code> 값에 <code>3.0b3</code>을 사용하는 것이 좋습니다.</div>

<p>확장기능들을 제대로 동작하지 않게 만들 수 있는 API의 많은 변화가 있었고 앞으로도 계속될 것입니다. 우리는 이러한 변화에 대한 전체 목록을 제공하기 위해 지속적으로 작업하고 있습니다.</p>

<div class="blockIndicator note"><strong>주의:</strong> 여러분의 확장기능이 아직도 <a href='"ko/Install_Manifests"'>install manifest</a>가 아닌 <code><a href='"ko/Install.js"'>Install.js</a></code> 스크립트를 사용하고 있다면, 지금 시점에는 install manifest로 전환해야만 합니다. Firefox 3은 더 이상 XPI 파일의 <code>install.js</code> 스크립트를 지원하지 않습니다.</div>

<h4 id="Install_manifest.EC.97.90_.EC.A7.80.EC.97.AD.ED.99.94_.EC.B6.94.EA.B0.80.ED.95.98.EA.B8.B0" name="Install_manifest.EC.97.90_.EC.A7.80.EC.97.AD.ED.99.94_.EC.B6.94.EA.B0.80.ED.95.98.EA.B8.B0">Install manifest에 지역화 추가하기</h4>

<p>Firefox 3에서는 지역화된 정보를 명시하기 위해 install manifest에 새로운 속성을 지원합니다. 기존 방법들이 여전히 동작하긴 하지만 새로운 방법을 이용하면 Firefox에서 부가 기능의 설치가 중지되어 있거나 불가능한 동안에도 지역 정보를 선택할 수 있도록 해 줍니다. 자세한 내용은 <a href="ko/Localizing_extension_descriptions">Localizing extension descriptions</a>을 참조하세요.</p>

<h3 id=".EB.8B.A8.EA.B3.84_2_.EB.B3.B4.EC.95.88_.EC.97.85.EB.8D.B0.EC.9D.B4.ED.8A.B8.EB.A5.BC_.EC.A0.9C.EA.B3.B5.ED.95.98.EA.B3.A0_.EC.9E.88.EB.8A.94.EC.A7.80_.ED.99.95.EC.9D.B8.ED.95.98.EC.84.B8.EC.9A.94." name=".EB.8B.A8.EA.B3.84_2:_.EB.B3.B4.EC.95.88_.EC.97.85.EB.8D.B0.EC.9D.B4.ED.8A.B8.EB.A5.BC_.EC.A0.9C.EA.B3.B5.ED.95.98.EA.B3.A0_.EC.9E.88.EB.8A.94.EC.A7.80_.ED.99.95.EC.9D.B8.ED.95.98.EC.84.B8.EC.9A.94.">단계 2: 보안 업데이트를 제공하고 있는지 확인하세요.</h3>

<p>여러분이 직접 부가기능을 제공하고 있지만 <a class="link-https" href="https://addons.mozilla.org">addons.mozilla.org</a>과 같은 보안을 지원하지 않을 경우에는, 부가 기능을 업데이트할 수 있는 보안 방법을 제공해야 합니다. 이를 위해서는 여러분의 업데이트 사이트가 SSL 웹사이트에서 운영되던지 업데이트 정보가 서명된 암호화 키를 사용해야 합니다. 자세한 정보는 <a href="ko/Extension_Versioning%2c_Update_and_Compatibility#Securing_Updates">Securing Updates</a>를 읽어보세요.</p>

<h3 id=".EB.8B.A8.EA.B3.84_3_.EB.B3.80.EA.B2.BD.EB.90.9C_API_.EC.B2.98.EB.A6.AC.ED.95.98.EA.B8.B0" name=".EB.8B.A8.EA.B3.84_3:_.EB.B3.80.EA.B2.BD.EB.90.9C_API_.EC.B2.98.EB.A6.AC.ED.95.98.EA.B8.B0">단계 3: 변경된 API 처리하기</h3>

<p>몇 가지 API에서 중요한 변화가 있었습니다. 다음은 대부분의 확장 기능에 영향을 줄 것으로 보이는, 가장 중요한 변화들 입니다.</p>

<h4 id="DOM" name="DOM">DOM</h4>

<p>Nodes from external documents should be cloned using <a href="/ko/docs/Web/API/Document/importNode" title="현재 문서가 아닌 외부 문서의 노드를 복사하여 현재 문서에 넣을 수 있도록 해줍니다."><code>document.importNode()</code></a> (or adopted using <a href="/ko/docs/Web/API/Document/adoptNode" title="외부 문서로부터 노드를 가져온다. 해당 노드와 그 하위트리는 기존의 문서에서 지워지고 해당 노드의 ownerDocument 는 현재 문서로 바뀐다. 그리고 그 노드는 현재의 문서에 삽입된다."><code>document.adoptNode()</code></a>) before they
    can be inserted into the current document. For more on the <a href="/ko/docs/Web/API/Node/ownerDocument" title="Node.ownerDocument 읽기 전용 속성은 이 node 의 최상위 document 객체를 반환합니다."><code>Node.ownerDocument</code></a> issues, see the
    <a class="external" href="http://www.w3.org/DOM/faq.html#ownerdoc" rel="noopener">W3C DOM FAQ</a>.</p>

    <p>Firefox doesn't currently enforce this rule (it did for a while during the development of Firefox 3, but too many
    sites break when this rule is enforced). We encourage Web developers to fix their code to follow this rule for
    improved future compatibility.</p>

<h4 id=".EB.B6.81.EB.A7.88.ED.81.AC__.ED.9E.88.EC.8A.A4.ED.86.A0.EB.A6.AC" name=".EB.B6.81.EB.A7.88.ED.81.AC_&amp;_.ED.9E.88.EC.8A.A4.ED.86.A0.EB.A6.AC">북마크 &amp; 히스토리</h4>

<p>여러분의 확장 기능이 어떤 방식으로든 북마크나 히스토리 자료에 접근한다면, Firefox 3과 호환되도록 하기 위해 많은 수정 작업이 필요합니다. 해당 정보에 접근하는데 사용되었던 기존 API는 새로운 <a href="ko/Places">Places</a> 구조로 변경되었습니다. 기존 확장 기능을 Places API를 사용하도록 업데이트하는 것과 관련된 상세 내용은 <a href="ko/Places/Migration_Guide">플레이스로 이행 가이드</a>를 참조하세요.</p>

<h4 id=".EB.8B.A4.EC.9A.B4.EB.A1.9C.EB.93.9C_.EA.B4.80.EB.A6.AC.EC.9E.90" name=".EB.8B.A4.EC.9A.B4.EB.A1.9C.EB.93.9C_.EA.B4.80.EB.A6.AC.EC.9E.90">다운로드 관리자</h4>

<p>다운로드 관리자 API는 RDF data store에서 [Storage]] API로의 변경으로 인하여 약간의 변경 사항이 있습니다. 이와 관련된 변경은 꽤 쉽습니다. 추가적으로 다운로드 진행을 모니터링하는 API에서는 다중 다운로드 관리자 리스너를 지원하도록 변경되었습니다. 자세한 내용은 <code><a href="/ko/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDownloadManager" title="">nsIDownloadManager</a></code>, <code><a href="/ko/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDownloadProgressListener" title="">nsIDownloadProgressListener</a></code>, <a href="ko/Monitoring_downloads">Monitoring downloads</a>를 참조하세요.</p>

<h4 id=".EC.95.94.ED.98.B8_.EA.B4.80.EB.A6.AC.EC.9E.90" name=".EC.95.94.ED.98.B8_.EA.B4.80.EB.A6.AC.EC.9E.90">암호 관리자</h4>

<p>여러분의 확장기능이 암호 관리자를 이용하여 사용자의 로그인 정보에 접근한다면, 새로운 암호 관리자 API를 사용하도록 업데이트해야만 합니다.</p>

<ul>
 <li>The article <a href="ko/Using_nsILoginManager">Using nsILoginManager</a> includes examples, including a demonstration of how to write your extension to work with both the Password Manager and the Login Manager, so it will work with both Firefox 3 and earlier versions.</li>
 <li><code><a href="ko/NsILoginInfo">nsILoginInfo</a></code></li>
 <li><code><a href="ko/NsILoginManager">nsILoginManager</a></code></li>
</ul>

<h4 id="Popups_.28Menus.2C_Context_Menus.2C_Tooltips_and_Panels.29" name="Popups_.28Menus.2C_Context_Menus.2C_Tooltips_and_Panels.29">Popups (Menus, Context Menus, Tooltips and Panels)</h4>

<p>The XUL Popup system was heavily modified in Firefox 3. The Popup system includes main menus, context menus and popup panels. A guide to <a href="ko/XUL/PopupGuide">using Popups</a> has been created, detailing how the system works. One thing to note is that <code>popup.<span id="m-showPopup"><code><a href="https://developer.mozilla.org/ko/docs/Mozilla/Tech/XUL/Method/showPopup">showPopup</a></code></span></code> has been deprecated in favor of new <code>popup.<span id="m-openPopup"><code><a href="https://developer.mozilla.org/ko/docs/Mozilla/Tech/XUL/Method/openPopup">openPopup</a></code></span></code> and <code>popup.<span id="m-openPopupAtScreen"><code><a href="https://developer.mozilla.org/ko/docs/Mozilla/Tech/XUL/Method/openPopupAtScreen">openPopupAtScreen</a></code></span></code>.</p>

<h4 id=".EC.A0.9C.EA.B1.B0.EB.90.9C_.EC.9D.B8.ED.84.B0.ED.8E.98.EC.9D.B4.EC.8A.A4" name=".EC.A0.9C.EA.B1.B0.EB.90.9C_.EC.9D.B8.ED.84.B0.ED.8E.98.EC.9D.B4.EC.8A.A4">제거된 인터페이스</h4>

<p>다음 인터페이스들은 Firefox 3의 기반인 Gecko 1.9에서 제거되었습니다. 확장 기능이 이것들을 사용한다면 코드를 업데이트 해야 합니다.</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> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=386200" title='FIXED: SeaMonkey only: no "view cert button" in untrusted cert error dialog'>bug 386200</a> 참조)</li>
</ul>

<h3 id="Step_4_Check_for_relevant_chrome_changes" name="Step_4:_Check_for_relevant_chrome_changes">Step 4: Check for relevant chrome changes</h3>

<p>There has been a minor change to the chrome that may require changes in your code. A new <code>vbox</code> has been added, called "browser-bottombox", which encloses the find bar and status bar at the bottom of the browser window. Although this doesn't affect the appearance of the display, it may affect your extension if it overlays chrome relative to these elements.</p>

<p>For example, if you previously overlaid some chrome before the status bar, like this:</p>

<pre>&lt;window id="main-window"&gt;
  &lt;something insertbefore="status-bar" /&gt;
&lt;/window&gt;
</pre>

<p>You should now overlay it like this:</p>

<pre>&lt;vbox id="browser-bottombox"&gt;
  &lt;something insertbefore="status-bar" /&gt;
&lt;/vbox&gt;
</pre>

<div class="blockIndicator note"><strong>주의:</strong> This change is effective for Firefox 3 beta 4 and the pre-beta 4 nightlies.</div>

<h3 id=".EA.B7.B8_.EB.B0.96.EC.9D.98_.EB.B3.80.ED.99.94.EB.93.A4" name=".EA.B7.B8_.EB.B0.96.EC.9D.98_.EB.B3.80.ED.99.94.EB.93.A4">그 밖의 변화들</h3>

<p><em>여러분의 확장기능이 Firefox 3에서 제대로 동작하기 위해 업데이트 했던 간단한 사항들을 추가해 주세요.</em></p>

<ul>
 <li><code><a href="/ko/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAboutModule" title="">nsIAboutModule</a></code> implementations are now required to support the <code>getURIFlags</code> method. See <a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/protocol/about/public/nsIAboutModule.idl" rel="custom">nsIAboutModule.idl</a> for documentation. This affects extensions that provide new about: URIs. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=337746" title='FIXED: [FIX]Move "safe about" hardcoding out of security manager'>bug 337746</a>)</li>
 <li>더 이상 <code><a href="/ko/docs/Mozilla/Tech/XUL/tabbrowser" title="tabbrowser">tabbrowser</a></code>은 "toolkit"의 일부가 아닙니다(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=339964" title="FIXED: move tabbrowser.xml out of mozilla/toolkit and into mozilla/browser">bug 339964</a>). 이는 이 요소가 더이상 XUL 응용 프로그램과 확장기능에서 사용 가능하지 않다는 것을 의미합니다. 이 요소는 메인 Firefox 윈도우(browser.xul)에서는 계속 사용될 것입니다.</li>
 <li>Changes to <a href="ko/NsISupports_proxies">nsISupports proxies</a> <a class="external" href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/78236a4b312a2de4/939240fc3f5123a8?lnk=st&amp;rnum=1#939240fc3f5123a8"> and possibly to threading-related interfaces need to be documented. </a></li>
 <li><a class="external" href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/78236a4b312a2de4/939240fc3f5123a8?lnk=st&amp;rnum=1#939240fc3f5123a8">만일 XUL 파일에 <code>&lt;?xml-stylesheet ?&gt;</code>와 같은 XML 처리 지시문(processing instructions)을 사용하고 있다면 </a><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=319654" title="FIXED: Processing instructions in XUL are not added to the content model">bug 319654</a>을 참고하세요.
  <ol>
   <li><a class="external" href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/78236a4b312a2de4/939240fc3f5123a8?lnk=st&amp;rnum=1#939240fc3f5123a8">XML 처리 지시문은 XUL 문서의 DOM에 추가됩니다. 이것은 </a><a href="/ko/docs/Web/API/Document/firstChild" title="The documentation about this has not yet been written; please consider contributing!"><code>document.firstChild</code></a>이 문서의 루트 요소를 나타내지 않을 수도 있다는 것을 의미합니다. 스크립트에서 문서의 루트 요소를 얻으려면, 대신 <a href="/ko/docs/Web/API/Document/documentElement" title="Document.documentElement 는 읽기 전용 속성으로 document 의 루트 요소인 Element를 반환한다 (가령, HTML 문서의 &lt;html> 요소)."><code>document.documentElement</code></a>을 사용하세요. </li>
   <li><a class="external" href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/78236a4b312a2de4/939240fc3f5123a8?lnk=st&amp;rnum=1#939240fc3f5123a8"><code>&lt;?xml-stylesheet ?&gt;</code> and <code>&lt;?xul-overlay ?&gt;</code> processing instructions now have no effect outside the document prolog. </a></li>
  </ol>
 </li>
 <li><a class="external" href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/78236a4b312a2de4/939240fc3f5123a8?lnk=st&amp;rnum=1#939240fc3f5123a8"><code>window.addEventListener("load", myFunc, true)</code> is not fired when loading web content (browser page loads). This is due to </a><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=296639" title="FIXED: Split windows into an inner and outer object">bug 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="ko/Code_snippets/Tabbed_browser#Detecting_page_load">here</a> and works in Firefox 2 as well.</li>
 <li>기존의 문자열을 반환하는 deprecated <code>content.document.getSelection()</code>와 달리 <code>content.window.getSelection()</code>은 객체를 반환하며 <code>toString()</code>로 문자열로 변환할 수 있습니다.</li>
 <li><code>event.preventBubble()</code> was deprecated in Firefox 2 and has been removed in Firefox 3. Use <a href="ko/DOM/event.stopPropagation"><code>event.stopPropagation()</code></a>, which also works in Firefox 2 as well.</li>
</ul>

<div class="noinclude"> </div>