mozilla

比较版本

Installing_Extensions_and_Themes_From_Web_Pages(从网页安装扩展和主题)

更改版本

修订版 276232:

由 vika0322 在 进行的修订 276232

修订版 223183:

由 vika0322 在 进行的修订 223183

标题:
Installing_Extensions_and_Themes_From_Web_Pages(从网页安装扩展和主题)
Installing Extensions and Themes From Web Pages(从网页安装扩展和主题)
网址缩略名:
Installing_Extensions_and_Themes_From_Web_Pages(从网页安装扩展和主题)
Installing_Extensions_and_Themes_From_Web_Pages(从网页安装扩展和主题)
内容:

修订版 276232
修订版 223183
t7    <p>t
8      There are a variety of ways you can install <a href="/en/Ex
>tensions" title="en/Extensions">extensions</a> and <a href="/en/T 
>hemes" title="en/Themes">themes</a> from web pages, including dir 
>ect linking to the XPI files and using the <a href="/en/XPInstall 
>_API_Reference/InstallTrigger_Object" title="en/XPInstall_API_Ref 
>erence/InstallTrigger_Object">InstallTrigger</a> object.(译:要通过网页来 
>安装扩展和主题,有多种方法可供选择,包括直接链接到XPI文件和使用<a href="/en/XPInstall_API_Refer 
>ence/InstallTrigger_Object" title="en/XPInstall_API_Reference/Ins 
>tallTrigger_Object">InstallTrigger</a>对象。) 
9    </p>
10    <p>
11      Extension and web authors are encouraged to use the method 
>described below to install XPIs, as it provides the best experien 
>ce to users.(译:鼓励扩展和网页的开发者使用如下描述的方法来安装XPI文件,这将会给使用者最好的体验。) 
12    </p>
13    <h3 id="Web_Script_Example" name="Web_Script_Example">
14      Web Script Example
15    </h3>
16    <pre class="eval">
17&lt;script type="application/x-javascript"&gt;
18&lt;!--
19function install (aEvent)
20{
21  var params = {
22    "Foo": { URL: aEvent.target.href,
23             IconURL: aEvent.target.getAttribute("iconURL"),
24             Hash: aEvent.target.getAttribute("hash"),
25             toString: function () { return this.URL; }
26    }
27  };
28  InstallTrigger.install(params);
29 
30  return false;
31}
32--&gt;
33&lt;/script&gt;
34 
35&lt;a href="<a class=" external" href="http://www.example.com/foo
>.xpi" rel="freelink">http://www.example.com/foo.xpi</a>" 
36  iconURL="<a class=" external" href="http://www.example.com/foo.
>png" rel="freelink">http://www.example.com/foo.png</a>" 
37  hash="sha1:28857e60d043447c5f4550853f2d40770b326a13"
38  onclick="return install(event);"&gt;Install Extension!&lt;/a&gt
>; 
39</pre>
40    <p>
41      Let's go through this piece by piece. The HTML &lt;a&gt; is
> the install link. The href attribute contains a direct link to t 
>he extension XPI file, this is what will show in the location bar 
> when the link is moused over. Users can save the XPI file to dis 
>k easily by right clicking on the link and choosing "Save Link As 
>..."[译:让我们一点一点地看这些代码。HTML标签&lt;a&gt;是用来安装的链接。href属性包含了一个到扩展XPI文件的 
>连接,当鼠标经过时这个连接就会在地址栏中显示出来。使用者可以简单地通过点击右键选“另存为...”来保存该XPI文件到本地磁盘。] 
42    </p>
43    <p>
44      When the link is clicked it calls the function <code>instal
>l</code> passing the event object as the parameter.[译:当这个链接被点击时,< 
>code>install函数会被调用,并传递一个事件对象</code>作为参数。] 
45    </p>
46    <p>
47      The install first creates a parameter block:[译:安装过程首先会创建一个如
>下的参数块:] 
48    </p>
49    <pre class="eval">
50var params = {
51  "Foo": { URL: aEvent.target.href,
52           IconURL: aEvent.target.getAttribute("iconURL"),
53           Hash: aEvent.target.getAttribute("hash"),
54           toString: function () { return this.URL; }
55};
56</pre>
57    <p>
58      This specifies the display name (Foo) for use in the confir
>mation dialog, the URL to the extension (which is the link <code> 
>href</code>, recall), the Icon URL to display in the confirmation 
> dialog, a hash of the xpi file contents (to protect against corr 
>upted downloads), and a <code>toString</code> function which will 
> allow this code to work with versions of Firefox 0.8 and earlier 
>. You could also use the old style parameter block (<code>{ "Foo" 
>: aEvent.target.href }</code>) if you wanted - and didn't have an 
> Icon to use for the confirmation dialog.[译:它指定了在确认对话框上的显示名字(Foo) 
>,到扩展的URL(连接的<code>href属性</code>),显示在确认对话框上的图标的URL,xpi文件的hash值(防止下 
>载过程中的错误),和一个用来让该能在Firefox0.8及以前版本上工作的<code>toString函数。如果愿意的话,你可以使 
>用旧的</code>编码风格来写这个参数块(<code>{ "Foo": aEvent.target.href }</code>) 
>,你也可以不指定显示在确认对话框上的图标。] 
59    </p>
60    <p>
61      <code>InstallTrigger.install</code> is then called to insta
>ll the item with the parameter block. [译:接下来<code>InstallTrigger. 
>install会被调用,它使用刚才的参数块来安装项目。</code>] 
62    </p>
63    <pre class="eval">
64return false;
65</pre>
66    <p>
67      This last part is the most important - the install function
> must return <code>false</code> so that when the link is clicked, 
> only the script is run, and the link href is not navigated to. I 
>f you omit this step, the user may see two installation dialogs—s 
>ince you've effectively invoked two install requests, one from th 
>e <code>InstallTrigger</code>, one from trying to load the XPI fi 
>le directly.[译:最后一部分是最重要的,install函数必须返回<code>false,这样当链接被点击时</cod 
>e>只有脚本被运行了,而并未导航到连接的地址。如果你忽略该步,使用者将看到两个安装对话框--因为你成功的调用了两次安装请求,一次来 
>自于<code>InstallTrigger,另一次来自于</code>直接下载XPI文件。] 
68    </p>
69    <h3 id="Available_Parameters_for_the_install_object" name="Av
>ailable_Parameters_for_the_install_object"> 
70      Available Parameters for the install object(install对象可使用的参数
>) 
71    </h3>
72    <p>
73      The <code>InstallTrigger.install</code> method accepts a Ja
>vaScript object as a parameter, with several properties on that o 
>bject used to affect the install.[译:<code>InstallTrigger.install< 
>/code> 方法接收一个JavaScript对象作为参数,该参数对象中有一些属性来影响安装。] 
74    </p>
75    <h4 id="URL" name="URL">
76      URL
77    </h4>
78    <p>
79      The <code>URL</code> property specifies the URL of the XPI 
>to install. This property is required.[<code>URL属性指定了将被安装的XPI文件的< 
>/code>URL.该属性是必须的。] 
80    </p>
81    <h4 id="IconURL" name="IconURL">
82      IconURL
83    </h4>
84    <p>
85      The <code>IconURL</code> property specifies an icon to be d
>isplayed in the installation dialog. This property is optional. I 
>f you do not specify an icon, the default icon will be used, usua 
>lly a green puzzle piece. The icon can be any image format suppor 
>ted by Firefox, and should be 32x32 pixels in size.[译:<code>IconU 
>RL属性指定一个显示在安装对话框上的图标。如果不指定图标,一个默认的图标就会被使用,通常是一个绿色的拼图块。图标可以是任意被Fir 
>efox</code>支持的格式,但大小应是32x32像素的。] 
86    </p>
87    <h4 id="Hash" name="Hash">
88      Hash
89    </h4>
90    <p>
91      The <code>Hash</code> property specifies a cryptographic ha
>sh of the XPI file contents. This is used to verify the downloade 
>d file, to protect against a corrupted file being served by a mir 
>ror download server, for example. You can use any hash function s 
>upported by <a href="/en/nsICryptoHash" title="en/nsICryptoHash"> 
>nsICryptoHash</a>. The hash is specified as <code>hash function:h 
>ash value</code>, for example, <code>sha1:28857e60d043447c5f45508 
>53f2d40770b326a13</code>.[译:<code>Hash属性用于指定XPI文件内容的</code>加密hash 
>值。这被用来验证下载文件,例如,可以防止一个错误的XPI文件被放在镜像服务器上被下载。可以使用被<a href="/en/nsIC 
>ryptoHash" title="en/nsICryptoHash">nsICryptoHash</a>支持的hash函数。该h 
>ash值的格式为 hash函数:hash值,例如:<code>sha1:28857e60d043447c5f4550853f2d4 
>0770b326a13。</code>] 
92    </p>
93    <h4 id="toString.28.29" name="toString.28.29">
94      toString()
95    </h4>
96    <p>
97      The <code>toString()</code> property should return the XPI 
>URL, for compatibility with Firefox browsers older than version 1 
>.0, and other applications such as Seamonkey.[译:<code>toString()属 
>性应当返回</code>XPI 的URL,主要是为了兼容早于1.0版本的浏览器和其它程序如Seamonkey。] 
98    </p>
99    <h3 id="Themes" name="Themes">
100      Themes
101    </h3>
102    <p>
103      Pretty much everything I've described applies to themes too
>, except you'll use the <code>installChrome</code> function. Beca 
>use so many sites installed extensions by direct-linking the XPI  
>file and relying on content handling to invoke the confirmation U 
>I, many sites are (incorrectly) doing so for theme JAR files too  
>and wondering why they aren't auto-detected and installed. Well,  
>XPI is a Mozilla-specific extension and so we can have special ha 
>ndling for it, but JAR is not - not all .jar files are Firefox th 
>emes, so if you click on a .jar link you'll be shown the Save As  
>decision dialog. For this reason you should always use the <code> 
>InstallTrigger</code> API to install themes. 
104    </p>
105    <h3 id="A_Note_on_updateEnabled.28.29" name="A_Note_on_update
>Enabled.28.29"> 
106      A Note on updateEnabled()
107    </h3>
108    <p>
109      <code>InstallTrigger</code> exposes a function called <code
>>updateEnabled</code> that some of you may be calling before you  
>call <code>InstallTrigger.install</code>. This is not necessary a 
>s install calls <code>updateEnabled</code> itself internally. Fur 
>thermore, calling <code>updateEnabled</code> may lead to problems 
> if your distribution site is not in the user's whitelist, becaus 
>e Firefox only displays the "Installation Blocked" message when i 
>nstall or <code>installChrome</code> are called, or when a XPI fi 
>le is loaded. So, if you have code that looks like this: 
110    </p>
111    <pre class="eval">
112if (InstallTrigger.updateEnabled())
113  InstallTrigger.install({"Foo": "foo.xpi"});
114</pre>
115    <p>
116      ... and your site is not in the whitelist, when the user in
>vokes that code, <code>updateEnabled</code> will return <code>fal 
>se</code> because your site isn't whitelisted, and since it was < 
>code>updateEnabled</code> that discovered this, not a call to ins 
>tall, there will be no notification to the user. 
117    </p>
118    <p>
119      Thus you should only use <code>updateEnabled</code> to disp
>lay content in the page to alert the user that software installat 
>ion is disabled, or your site is not in the whitelist—do not plac 
>e it in the install code path. 
120    </p>
121    <p>
122      (* by all means don't let this stop you from developing mor
>e ambitious install systems, I am providing this documentation on 
>ly as a guide that I hope most extension distributors will use si 
>nce it handles most cases well) 
123    </p>
124    <p>
125      {{ languages( { "fr": "fr/Installation_d\'extensions_et_de_
>th\u00e8mes_depuis_une_page_Web", "ja": "ja/Installing_Extensions 
>_and_Themes_From_Web_Pages" } ) }} 
126    </p>

返回历史