diff options
Diffstat (limited to 'files/zh-cn/mozilla/add-ons/webextensions/manifest.json')
16 files changed, 1392 insertions, 0 deletions
diff --git a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/author/index.html b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/author/index.html new file mode 100644 index 0000000000..a688478298 --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/author/index.html @@ -0,0 +1,40 @@ +--- +title: 作者 - author +slug: Mozilla/Add-ons/WebExtensions/manifest.json/author +tags: + - 作者 +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/author +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">值类型</th> + <td><code>字符串(String)</code></td> + </tr> + <tr> + <th scope="row">强制性</th> + <td>非强制</td> + </tr> + <tr> + <th scope="row">示例</th> + <td> + <pre class="brush: json"> +"author": "小明"</pre> + </td> + </tr> + </tbody> +</table> + +<p>附加组件的作者, 用于在浏览器用户界面上显示, 这样别人下载安装使用该附加组件的时候, 就能看见你的大名了.</p> + +<h2 id="示例">示例</h2> + +<pre class="brush: json">"author": "小明"</pre> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.author")}}</p> diff --git a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/background/index.html b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/background/index.html new file mode 100644 index 0000000000..df4e1fc9ae --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/background/index.html @@ -0,0 +1,88 @@ +--- +title: 后台 - background +slug: Mozilla/Add-ons/WebExtensions/manifest.json/background +tags: + - 后台 + - 附加组件 +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/background +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Object</code></td> + </tr> + <tr> + <th scope="row">强制性</th> + <td>不强制</td> + </tr> + <tr> + <th scope="row">示例</th> + <td> + <pre class="brush: json"> +"background": { + "scripts": ["background.js"] +}</pre> + </td> + </tr> + </tbody> +</table> + +<p>通过background 键来给您的扩展程序引入一个或者多个后台脚本文件,以及一个可选的后台页面文件。</p> + +<p>后台脚本放置的是需要长期保持状态,或者需要执行长期的操作,并且与任意特定网页或者浏览器窗口的生命周期无关的代码。</p> + +<p>后台脚本会在扩展程序被加载后立即被加载,并且一直保持被加载状态,只有在扩展程序被禁止或者卸载的时候才停止运行。只要您获得了必要的许可<a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a>,您可以在该脚本中使用任意的扩展程序API。</p> + +<p>浏览<a href="/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_pages">Anatomy of a WebExtension</a>中的Background pages部分以获取更多的细节。</p> + +<p>background 键最多只能拥有以下的两个属性,两个属性都是可选属性:</p> + +<table class="standard-table"> + <tbody> + <tr> + <td><code>"scripts"</code></td> + <td> + <p>一个字符串数组,数组中的每个字符串都是JavaScript源文件相对于manifest.json的相对路径,JavaScript源文件便是些被包含在扩展程序中的后台脚本文件。</p> + + <p>脚本共享相同的全局窗口</p> + + <p>脚本按照在数组中的顺序进行加载</p> + + <p><strong>注意在低于Firefox 50版本的浏览器下会出现一个问题:</strong>当Firefox debugger已经打开时,脚本并不能总是按照数组中定义的顺序进行加载。若要解决这个问题,您可以使用page属性,用<script>标签将后台脚本文件从页面中加载进来。这个问题已经在Firefox 50中被修复。</p> + </td> + </tr> + <tr> + <td><code>"page"</code></td> + <td> + <p>如果您仅仅指定了“scripts”属性,将生成一个空白的页面来运行指定的脚本。</p> + + <p>如果您需要在页面中显示某些特定的内容,您可以使用“page”属性来定义自己的页面。</p> + + <p dir="ltr" id="tw-target-text">如果您使用此属性,您仍然可以使用“script”属性来指定后台脚本,但您也可以就像在普通网页中一样在页面中包含自己的脚本。</p> + </td> + </tr> + </tbody> +</table> + +<h2 id="示例">示例</h2> + +<p>加载2个后台脚本文件.</p> + +<pre class="brush: json"> "background": { + "scripts": ["jquery.js", "my-background.js"] + }</pre> + +<p>加载1个自定义的后台页面文件.</p> + +<pre class="brush: json"> "background": { + "page": "my-background.html" + }</pre> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.background", 10)}}</p> diff --git a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/browser_action/index.html b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/browser_action/index.html new file mode 100644 index 0000000000..f2e1ff07d1 --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/browser_action/index.html @@ -0,0 +1,209 @@ +--- +title: browser_action +slug: Mozilla/Add-ons/WebExtensions/manifest.json/browser_action +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/browser_action +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">类型</th> + <td><code>Object</code></td> + </tr> + <tr> + <th scope="row">是否必须</th> + <td>否</td> + </tr> + <tr> + <th scope="row">示例</th> + <td> + <pre class="brush: json no-line-numbers"> +"browser_action": { + "browser_style": true, + "default_icon": { + "16": "button/geo-16.png", + "32": "button/geo-32.png" + }, + "default_title": "Whereami?", + "default_popup": "popup/geo.html" +}</pre> + </td> + </tr> + </tbody> +</table> + +<p>浏览器按钮(browser action)指您的扩展在浏览器工具栏上所添加的按钮。该按钮有个图标,并可可选地拥有一个使用 HTML,CSS,和 JavaScript 指定内容的弹出窗口。</p> + +<p>如果您使用弹窗(popup),则该弹窗将在用户点击该按钮时打开,并且弹窗中你所提供的运行中的 JavaScript 将可处理用户与其的交互。如果您不使用弹窗,则会在用户点击该按钮时将点击事件传递给你扩展的 <a href="/zh-CN/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">background scripts</a> 中。</p> + +<p>您同样可以使用 <a href="/zh-CN/Add-ons/WebExtensions/API/browserAction">browserAction API</a> 以编程的方式创建及控制浏览器按钮。</p> + +<h2 id="语法">语法</h2> + +<p><code>browser_action</code> 键是一个可能有以下任何属性的对象,均是可选:</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">名称</th> + <th scope="col">类型</th> + <th scope="col">详细描述</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>browser_style</code></td> + <td><code>Boolean</code></td> + <td> + <div class="geckoVersionNote">Firefox 48 中新出现</div> + + <p>可选,默认为 <code>false</code>。</p> + + <p>使用此项来包含一个样式表以使其与浏览器 UI 和其它使用了 <code>browser_style</code> 属性的扩展外观上保持一致。虽然此键值默认为 <code>false</code>,还是建议您将其包含并设其为 <code>true</code>。</p> + + <p>在 Firefox 中,该样式表详阅 chrome://browser/content/extension.css,OS X 系统或见于 chrome://browser/content/extension-mac.css。</p> + + <p><a href="https://firefoxux.github.io/StyleGuide/#/controls">Firefox Style Guide</a> 记述了为获得特定样式您所能为弹窗中元素应用的 class。</p> + + <p><a href="https://github.com/mdn/webextensions-examples/tree/master/latest-download">latest-download</a> 中的示例扩展的弹窗使用了 <code>browser_style</code>。</p> + </td> + </tr> + <tr> + <td><code>default_area</code></td> + <td><code>String</code></td> + <td> + <div class="geckoVersionNote">Firefox 54 中新出现</div> + + <p>定义浏览器最初放置该按钮的位置。该字符串可能是以下四个值中的一个:</p> + + <ul> + <li>"navbar":按钮会被放置到浏览器主工具栏中,与 URL 栏并肩。</li> + <li>"menupanel":按钮会被放置到弹出面板中。</li> + <li>"tabstrip":按钮会被放置到包含浏览器选项卡的工具栏中。</li> + <li>"personaltoolbar":按钮会被放置到书签工具栏中。</li> + </ul> + + <p>该属性只有 Firefox 支持。</p> + + <p>这个属性是可选的,并默认为 "navbar"。</p> + + <p>扩展不能在其被安装后主动更改其按钮的位置,但用户可以使用浏览器内置的界面定制机制来移动按钮。</p> + </td> + </tr> + <tr> + <td><code>default_icon</code></td> + <td><code>Object</code> 或 <code>String</code></td> + <td> + <p>使用此项以指定一个或多个 browser action 之图标。该图标默认显示在浏览器工具栏里。</p> + + <p>图标使用相对于 manifest.json 文件本身的 URL 指定。</p> + + <p>你可以通过提供一个字符串以指定单个的图标文件:</p> + + <pre class="brush: json no-line-numbers"> +"default_icon": "path/to/geo.svg"</pre> + + <p>要指定多个不同大小的图标,则在此指定一个对象。每个属性的名字是以像素记的该图标的高,且其必须被转换为一个整数。值为其 URL。示例:</p> + + <pre class="brush: json no-line-numbers"> + "default_icon": { + "16": "path/to/geo-16.png", + "32": "path/to/geo-32.png" + }</pre> + + <p>参阅 <a href="/zh-CN/Add-ons/WebExtensions/manifest.json/browser_action#选择图标大小">选择图标大小</a> 以获得此项的更多指引。</p> + </td> + </tr> + <tr> + <td><code>default_popup</code></td> + <td><code>String</code></td> + <td> + <p>指向包含弹窗信息的 HTML 文件之路径</p> + + <p>该 HTML 文件可能会使用 <code><a href="/zh-CN/docs/Web/HTML/Element/link"><link></a></code> and <code><a href="/zh-CN/docs/Web/HTML/Element/script"><script></a></code> 元素来包含 CSS 和 JavaScript,就像普通网页一样。</p> + + <p>与普通网页不同,弹窗中运行的 JavaScript 能访问所有的 <a href="/en-US/Add-ons/WebExtensions/API">WebExtension APIs</a>(当然,仅对于拥有适当<a href="/zh-CN/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">权限</a>的扩展)。</p> + + <p>这是一个<a href="/zh-CN/Add-ons/WebExtensions/Internationalization#国际化_manifest.json">可本地化属性</a>。</p> + </td> + </tr> + <tr> + <td><code>default_title</code></td> + <td><code>String</code></td> + <td> + <p>按钮的工具提示,在用户将鼠标移到其上时显示。</p> + + <p>这是一个<a href="/zh-CN/Add-ons/WebExtensions/Internationalization#国际化_manifest.json">可本地化属性</a>。</p> + </td> + </tr> + </tbody> +</table> + +<h2 id="选择图标大小">选择图标大小</h2> + +<p>浏览器按钮的图标在不同上下文中可能需要以不同大小显示:</p> + +<ul> + <li>图标默认是在浏览器工具栏中显示,但用户能把它挪到浏览器菜单面板里(那个在用户点击 “汉堡” 图标时打开的面板)。工具栏里的图标比菜单面板里的图标小。</li> + <li>在像 Retina 屏的高密度显示器上,图标大要两倍。</li> +</ul> + +<p>如果浏览器在给定的情况下找不到正确尺寸的图标,它就会选最匹配的并对其缩放。缩放可能会使图标模糊,所以一件很重要的事情就是小心地选择图标尺寸。</p> + +<p>对此有两种常用方法。你可以以 SVG 文件的形式提供单个图标,然后它就会被正确地缩放:</p> + +<pre class="brush: json no-line-numbers">"default_icon": "path/to/geo.svg"</pre> + +<p>或者,您可以提供几个不同尺寸的图标,浏览器将选择最佳匹配。</p> + +<p>Firefox 中:</p> + +<ul> + <li>工具栏中图标的默认宽高为 16 * <code><a href="/zh-CN/docs/Web/API/Window/devicePixelRatio">window.devicePixelRatio</a></code>。</li> + <li>菜单面板中图标的默认宽高为 32 * <code><a href="/zh-CN/docs/Web/API/Window/devicePixelRatio">window.devicePixelRatio</a></code>。</li> +</ul> + +<p>所以你可以选定精确匹配的图标,不论普通屏还是 Retina 屏的显示,都仅需要提供三个图标文件,并把它们像这样确定下来:</p> + +<pre class="brush: json no-line-numbers"> "default_icon": { + "16": "path/to/geo-16.png", + "32": "path/to/geo-32.png", + "64": "path/to/geo-64.png" + }</pre> + +<p>如果 Firefox 找不到其需要的精确匹配的尺寸,则它会选择大于理想尺寸的已指定的最小图标。如果所有图标都小于理想尺寸,它就将选择已指定的最大图标。</p> + +<h2 id="示例">示例</h2> + +<pre class="brush: json no-line-numbers">"browser_action": { + "default_icon": { + "16": "button/geo-16.png", + "32": "button/geo-32.png" + } +}</pre> + +<p>只有一个图标的浏览器按钮,指定了 2 种不同大小。其扩展的 background scripts 能接收用户点击其图标时的点击事件代码大概像这样:</p> + +<pre class="brush: js no-line-numbers"> browser.browserAction.onClicked.addListener(handleClick);</pre> + +<pre class="brush: json">"browser_action": { + "default_icon": { + "16": "button/geo-16.png", + "32": "button/geo-32.png" + }, + "default_title": "Whereami?", + "default_popup": "popup/geo.html" +}</pre> + +<p>浏览器按钮具有一个图标,一个标题,还有一个弹窗。弹窗会在用户点击按钮时出现。</p> + +<p>对于一个简易,但是完整,使用了浏览器按钮的扩展,参见<a href="/zh-CN/Add-ons/WebExtensions/Your_second_WebExtension">演练教程</a>。</p> + +<h2 id="浏览器兼容性">浏览器兼容性</h2> + +<p>{{Compat("webextensions.manifest.browser_action", 10)}}</p> diff --git a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/browser_specific_settings/index.html b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/browser_specific_settings/index.html new file mode 100644 index 0000000000..5d200de3bd --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/browser_specific_settings/index.html @@ -0,0 +1,66 @@ +--- +title: applications +slug: Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings +tags: + - 插件 + - 附加组件 +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings +--- +<div>{{AddonSidebar}}</div> + +<div class="note"> +<p>注意这个key不被Blink-based浏览器(Google Chrome和Opera)支持。如果你在插件中包含了这个key,当在这些浏览器中调用时虽然能用但是会显示警告。</p> +</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">类型</th> + <td><code>Object</code></td> + </tr> + <tr> + <th scope="row">强制性</th> + <td>通常不做强制性要求(详细参见<a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID#When_do_you_need_an_Add-on_ID">When do you need an Add-on ID</a><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/applications#When_do_I_need_the_applications_key">?</a>)。在Firefox 48版本之前为强制要求。</td> + </tr> + <tr> + <th scope="row">示例</th> + <td> + <pre class="brush: json"> +"applications": { + "gecko": { + "id": "addon@example.com", + "strict_min_version": "42.0" + } +}</pre> + </td> + </tr> + </tbody> +</table> + +<p><code>applications</code> key包含特定于主机应用程序的键。</p> + +<p>目前只包含了一个key:<code>gecko</code>,其中包含了4个attributes:</p> + +<ul> + <li><code>id</code>即<a href="https://developer.mozilla.org/zh-CN/Add-ons/Install_Manifests#id">extension ID</a>。从Firefox 48起为可选项,在此之前为强制必须项。参看<a href="/zh-CN/docs/Mozilla/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID">WebExtensions and the Add-on ID</a>来确认何时需要定义附加组件ID。</li> + <li><code>strict_min_version</code>: Gecko所能支持的最小版本号。不允许使用"*"来定义版本号。默认值为 "42a1"。{{gecko_minversion_inline("45")}}</li> + <li><code>strict_max_version</code>: Gecko所能支持的最大版本号。如果安装或运行附加组件的Firefox版本号高于这个最大版本号,附加组件将不能运行或不允许被安装。默认值为"*",意思为不对最大版本号做检查。{{gecko_minversion_inline("45")}}</li> + <li><code>update_url</code>为链接到<a href="/zh-CN/Add-ons/Updates">add-on update manifest</a>的链接。注意链接必须以"https"开头。这是为了使你自己就能够管理附加组件的更新(如不通过AMO)。{{gecko_minversion_inline("45")}}</li> +</ul> + +<h2 id="Chrome不兼容性">Chrome不兼容性</h2> + +<p>你不能在Chrome附加组件中使用这个key。</p> + +<h2 id="示例">示例</h2> + +<p>示例中包含了所有可能的key。注意你通常不会包含<code>strict_max_version</code>或<code>update_url</code>key在大部分附加组件中。</p> + +<pre class="brush: json">"applications": { + "gecko": { + "id": "addon@example.com", + "strict_min_version": "42.0", + "strict_max_version": "50.*", + "update_url": "https://example.com/updates.json" + } +}</pre> diff --git a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/content_scripts/index.html b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/content_scripts/index.html new file mode 100644 index 0000000000..9fab86d4b9 --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/content_scripts/index.html @@ -0,0 +1,216 @@ +--- +title: content_scripts +slug: Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts +tags: + - WebExtensions + - 扩展 + - 附加组件 +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts +--- +<p>{{AddonSidebar}}</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">类型</th> + <td>数组(<code>Array)</code></td> + </tr> + <tr> + <th scope="row">必要</th> + <td>否</td> + </tr> + <tr> + <th scope="row">示例</th> + <td> + <pre class="brush: json"> +"content_scripts": [ + { + "matches": ["*://*.mozilla.org/*"], + "js": ["borderify.js"] + } +]</pre> + </td> + </tr> + </tbody> +</table> + +<p>让浏览器将<a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">content scripts</a>加载到匹配网址的网站上</p> + +<p>此键(content_scripts)是一个数组,每个项目都是一个满足下列条件的对象:</p> + +<ul> + <li> + <p><strong>必须</strong>包含一个名为<strong><code>matches</code></strong>的键,指定要加载脚本的URL的格式</p> + </li> + <li> + <p><strong>可以</strong>包含一个名为<strong><code>js</code></strong>或<strong><code>css</code></strong>的键,<span>列出要加载到匹配页面的脚本</span></p> + </li> + <li> + <p><strong>可以</strong>包含控制如何加载、何时加载等方面更精细的属性</p> + </li> +</ul> + +<p>下面表格列出了所有与你可以使用的键:</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">名称</th> + <th scope="col">类型</th> + <th scope="col">描述</th> + </tr> + </thead> + <tbody> + <tr> + <td><a id="all_frames" name="all_frames"><code>all_frames</code></a></td> + <td><code>Boolean</code></td> + <td> + <p><code>true</code>: 将<code><a href="#js">js</a></code>和<code><a href="#css">css</a></code>注入该页面所有的框架(frame)中</p> + + <p><code>false</code>: 仅注入到顶层</p> + + <p>默认为false</p> + </td> + </tr> + <tr> + <td><a id="css" name="css"><code>css</code></a></td> + <td><code>Array</code></td> + <td> + <p>一个数组,包含将会被注入到匹配页面的CSS文件的路径(路径相对于manifest.json)。</p> + + <p>在加载DOM之前,文件将会按指定的顺序注入。</p> + </td> + </tr> + <tr> + <td><a id="exclude_globs" name="exclude_globs"><code>exclude_globs</code></a></td> + <td><code>Array</code></td> + <td> + <div class="geckoVersionNote">Firefox 自48版本开始支持globs</div> + + <p><span class="short_text" id="result_box" lang="zh-CN"><span>包含通配符的字符串数组。</span> <span>请参阅下面的<a href="#Matching_URL_patterns">匹配URL格式</a>。</span></span></p> + </td> + </tr> + <tr> + <td><a id="exclude_matches" name="exclude_matches"><code>exclude_matches</code></a></td> + <td><code>Array</code></td> + <td>一个<a href="/en-US/Add-ons/WebExtensions/match_patterns">match patterns</a>的数组,<span class="short_text" id="result_box" lang="zh-CN"><span>请参阅下面的<a href="#Matching_URL_patterns">匹配URL格式</a>。</span></span></td> + </tr> + <tr> + <td><a id="include_globs" name="include_globs"><code>include_globs</code></a></td> + <td><code>Array</code></td> + <td> + <div class="geckoVersionNote">Firefox 自48版本开始支持globs</div> + <span class="short_text" id="result_box" lang="zh-CN"><span>包含通配符的字符串数组。</span> <span>请参阅下面的<a href="#Matching_URL_patterns">匹配URL格式</a>。</span></span></td> + </tr> + <tr> + <td><a id="js" name="js"><code>js</code></a></td> + <td><code>Array</code></td> + <td> + <p>一个数组,包含将会被注入到匹配页面的JS文件的路径(路径相对于manifest.json)。</p> + + <p>文件将会按指定的顺序注入。这意味着如果你想在另一个脚本中包含jQuery,可以这样做:</p> + + <pre class="brush: json"> +<code>"js": ["jquery.js", "my-content-script.js"]</code></pre> + + <p>接下来,<code>"my-content-script.js"</code>可以使用jQuery.</p> + + <p><span class="short_text" id="result_box" lang="zh-CN"><span>文件将在<a href="#run_at">run_at</a>指定的时间注入。</span></span></p> + </td> + </tr> + <tr> + <td><a id="matches" name="matches"><code>matches</code></a></td> + <td><code>Array</code></td> + <td> + <p>一个<a href="/en-US/Add-ons/WebExtensions/match_patterns">match patterns</a>的数组,<span class="short_text" id="result_box" lang="zh-CN"><span>请参阅下面的<a href="#Matching_URL_patterns">匹配URL格式</a>。</span></span></p> + + <p><span class="short_text" id="result_box" lang="zh-CN"><span>这是唯一的必须键。</span></span></p> + </td> + </tr> + <tr> + <td><a id="run_at" name="run_at"><code>run_at</code></a></td> + <td><code>String</code></td> + <td> + <p>此选项指定在<a href="#js">“js”键</a>中的脚本何时被注入。您可以使用下列的三个字符串之一,每个字符串都代表加载文档过程中的不同状态。状态直接对应于{{domxref("Document/readyState", "Document.readyState")}}:</p> + + <ul> + <li>“<code>document_start</code>”:对应于正在加载。 <span>DOM仍在加载中。</span></li> + <li>“<code>document_end</code>”:对应于可交互。 <span>DOM已完成加载,但脚本和图像等资源可能仍在加载。</span></li> + <li>“<code>document_idle</code>”:对应完成。 <span>文档及其所有资源已完成加载。</span></li> + </ul> + + <p>默认值为“document_idle”。</p> + + <p>在所有情况下,<a href="#js">js键</a>中的文件都会在<a href="#css">css键</a>中的文件之后注入。</p> + </td> + </tr> + </tbody> +</table> + +<h2 id="匹配URL格式">匹配URL格式</h2> + +<p>“content_scripts”键基于URL匹配将content scripts注入到网页上:如果网页的URL与键中的规则匹配,则将注入脚本。“content_scripts”中有四个属性,可以用于此规则:</p> + +<ul> + <li><code>matches</code>: 一个关于<a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">match patterns</a>的数组</li> + <li><code>exclude_matches:</code> 一个关于<a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">match patterns</a>的数组</li> + <li><code>include_globs</code>: 一个关于<a href="#globs">globs</a>的数组</li> + <li><code>exclude_globs:</code> 一个关于<a href="#globs">globs</a>的数组</li> +</ul> + +<p>要匹配这些属性之一,网址必须与其数组中的至少一个项匹配。例如,指定一个属性:</p> + +<pre class="brush: json">"matches": ["*://*.example.org/*", "*://*.example.com/*"]</pre> + +<p>"http://example.org/"和"http://example.com/"都将会匹配</p> + +<p>由于matches是唯一的强制性键,其他三个键用于进一步限制匹配的URL。要匹配作为一个整体的键,网址必须:</p> + +<ol> + <li>匹配matches属性</li> + <li>并且,匹配include_globs属性(如果有)</li> + <li>并且,不匹配<code>exclude_matches</code>属性(如果有)</li> + <li>并且,不匹配<code>exclude_globs</code>属性(如果有)</li> +</ol> + +<h3 id="globs">globs</h3> + +<div class="geckoVersionNote">Firefox 自48版本开始支持globs</div> + +<p>glob只是一个可以包含通配符的字符串。 有两种类型的通配符,您可以在一个glob中组合使用它们:</p> + +<ul> + <li>"*" 匹配零个或多个字符</li> + <li>"?" 匹配一个字符</li> +</ul> + +<p><code>例如,"*na?i"</code>会匹配<code>"illuminati"和</code><code>"annunaki"</code>,但不会匹配<code>"sagnarelli"</code>.</p> + +<h2 id="示例">示例</h2> + +<pre class="brush: json">"content_scripts": [ + { + "matches": ["*://*.mozilla.org/*"], + "js": ["borderify.js"] + } +]</pre> + +<p>这会将content脚本“borderify.js”插入到“mozilla.org”或其任何子域下的所有页面,无论是HTTP还是HTTPS。</p> + +<pre class="brush: json"> "content_scripts": [ + { + "exclude_matches": ["*://developer.mozilla.org/*"], + "matches": ["*://*.mozilla.org/*"], + "js": ["jquery.js", "borderify.js"] + } + ]</pre> + +<p>这会将两个content脚本插入到“mozilla.org”及其任何子域(除“developer.mozilla.org”外)的所有页面中,无论是通过HTTP还是HTTPS。</p> + +<p>content脚本有相同的DOM视图,并按照它们在数组中出现的顺序注入,因此“borderify.js”可以访问由“jquery.js”添加的全局变量。</p> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.content_scripts")}}</p> diff --git a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/default_locale/index.html b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/default_locale/index.html new file mode 100644 index 0000000000..9dc13eec3f --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/default_locale/index.html @@ -0,0 +1,42 @@ +--- +title: default_locale +slug: Mozilla/Add-ons/WebExtensions/manifest.json/default_locale +tags: + - default_locale +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/default_locale +--- +<p>{{AddonSidebar}}</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>String</code></td> + </tr> + <tr> + <th scope="row">强制性</th> + <td>可能发生的:如果存在_locales子目录,必须存在,否则不存在。</td> + </tr> + <tr> + <th scope="row">例子</th> + <td> + <pre class="brush: json"> +"default_locale": "en"</pre> + </td> + </tr> + </tbody> +</table> + +<p>如果扩展名包含_locales目录,则该key必须存在,否则不得存在。它标识 _locales的一个子目录,该子目录将用于查找扩展名的默认字符串。</p> + +<p>见 <a href="/en-US/Add-ons/WebExtensions/Internationalization">国际化</a> 。</p> + +<h2 id="范例">范例</h2> + +<pre class="brush: json">"default_locale": "en"</pre> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.default_locale")}}</p> diff --git a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/description/index.html b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/description/index.html new file mode 100644 index 0000000000..9081c82e10 --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/description/index.html @@ -0,0 +1,43 @@ +--- +title: 描述 - description +slug: Mozilla/Add-ons/WebExtensions/manifest.json/description +tags: + - 描述 + - 附加组件 +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/description +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">值类型</th> + <td><code>字符串</code></td> + </tr> + <tr> + <th scope="row">强制性</th> + <td>不强制</td> + </tr> + <tr> + <th scope="row">示例</th> + <td> + <pre class="brush: json"> +"description": "附加组件的主要功能特性的简短描述."</pre> + </td> + </tr> + </tbody> +</table> + +<p>用于在用户下载安装使用界面中显示的一段简短的关于该附加组件的描述.</p> + +<p>关于本地化, 可查看 <a href="/en-US/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">localizable property</a>.</p> + +<h2 id="示例">示例</h2> + +<pre class="brush: json">"description": "附加组件的主要功能特性的简短描述."</pre> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.description")}}</p> diff --git a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/developer/index.html b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/developer/index.html new file mode 100644 index 0000000000..86c16d8da1 --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/developer/index.html @@ -0,0 +1,48 @@ +--- +title: developer +slug: Mozilla/Add-ons/WebExtensions/manifest.json/developer +tags: + - Developer +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/developer +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">值类型</th> + <td><code>对象</code></td> + </tr> + <tr> + <th scope="row">强制性</th> + <td>非强制</td> + </tr> + <tr> + <th scope="row">示例</th> + <td> + <pre class="brush: json"> +"developer": { + "name": "Walt Whitman", + "url": "https://en.wikipedia.org/wiki/Walt_Whitman" +}</pre> + </td> + </tr> + </tbody> +</table> + +<p>插件开发者的名字和主页地址,用于显示在浏览器的用户界面中。</p> + +<p>该对象的两个属性都是可选的。如果存在“name”和“url”属性,将会分别覆盖<a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/author">author</a>和<a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/homepage_url">homepage_url</a>键。这个对象仅仅允许指定一个开发者名字的主页地址。</p> + +<h2 id="示例">示例</h2> + +<pre class="brush: json">"developer": { + "name": "Walt Whitman", + "url": "https://en.wikipedia.org/wiki/Walt_Whitman" +}</pre> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.developer")}}</p> diff --git a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/index.html b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/index.html new file mode 100644 index 0000000000..281382d382 --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/index.html @@ -0,0 +1,140 @@ +--- +title: manifest.json +slug: Mozilla/Add-ons/WebExtensions/manifest.json +tags: + - JSON + - manifest.json +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json +--- +<div>{{AddonSidebar}}</div> + +<div class="blockIndicator note"> +<p>本文描述的是适用于 WebExtensions 的 manifest.json。若您正在寻找适用于 PWA 的 manifest.json 的有关信息,请参考这篇文章:<a href="/zh-CN/docs/Web/Manifest">Web App Manifest</a>。</p> +</div> + +<div><code>manifest.json</code> 是每个 WebExtension 唯一必须包含的元数据文件。</div> + +<p>通过使用 <code>manifest.json</code>,您可以指定扩展的基本元数据,例如名称和版本,还可以指定扩展各个方面的功能(例如后台脚本,内容脚本和某些浏览器行为)。</p> + + +<p>它是一个允许使用 "<code>//</code>" 撰写单行注释的、特殊的 <a href="/zh-CN/docs/Glossary/JSON">JSON</a> 文件。</p> + +<h2 id="manifest.json_键列表">manifest.json 键列表</h2> + +<p>支持的 <code>manifest.json</code> 键如下所示:</p> + +<h3 id="简体中文内容">简体中文内容</h3> + +<div class="index">{{ListSubpages("/zh-CN/Add-ons/WebExtensions/manifest.json")}}</div> + +<h3 id="英文内容">英文内容</h3> + +<div class="index">{{ListSubpages("/en-US/Add-ons/WebExtensions/manifest.json")}}</div> + +<ul> + <li><code>"manifest_version"</code>,<code>"version"</code>,和 <code>"name"</code> 是唯一的强制必填键。</li> + <li>如果 "_locales" 目录存在的话,"<code>default_locale"</code> 也必须相应存在,否则不应存在。</li> + <li>Google Chrome 不支持 <code>"browser_specific_settings"</code></li> +</ul> + +<h3 id="在运行时访问_manifest.json_键">在运行时访问 manifest.json 键</h3> + +<p>你可以在拓展的 JavaScript 代码中通过 {{WebExtAPIRef("runtime.getManifest()")}} 函数访问拓展的 manifest 数据:</p> + +<pre class="brush: js; no-line-numbers">browser.runtime.getManifest().version;</pre> + +<h2 id="示例">示例</h2> + +<p>The block below shows the basic syntax for some common manifest keys.</p> + +<div class="blockIndicator note"> +<p><strong>Note:</strong> This is not intended to be used as a copy-paste-ready example. Selecting the keys you'll need depends on the extension you are developing.</p> +</div> + +<p>For complete example extensions, see <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Examples">Example extensions</a>.</p> + +<pre class="brush: json;">{ + "browser_specific_settings": { + "gecko": { + "id": "addon@example.com", + "strict_min_version": "42.0" + } + }, + + "background": { + "scripts": ["jquery.js", "my-background.js"], + }, + + "browser_action": { + "default_icon": { + "19": "button/geo-19.png", + "38": "button/geo-38.png" + }, + "default_title": "Whereami?", + "default_popup": "popup/geo.html" + }, + + "commands": { + "toggle-feature": { + "suggested_key": { + "default": "Ctrl+Shift+Y", + "linux": "Ctrl+Shift+U" + }, + "description": "Send a 'toggle-feature' event" + } + }, + + "content_security_policy": "script-src 'self' https://example.com; object-src 'self'", + + "content_scripts": [ + { + "exclude_matches": ["*://developer.mozilla.org/*"], + "matches": ["*://*.mozilla.org/*"], + "js": ["borderify.js"] + } + ], + + "default_locale": "en", + + "description": "...", + + "icons": { + "48": "icon.png", + "96": "icon@2x.png" + }, + + "manifest_version": 2, + + "name": "...", + + "page_action": { + "default_icon": { + "19": "button/geo-19.png", + "38": "button/geo-38.png" + }, + "default_title": "Whereami?", + "default_popup": "popup/geo.html" + }, + + "permissions": ["webNavigation"], + + "version": "0.1", + + "user_scripts": { + "api_script": "apiscript.js", + }, + + "web_accessible_resources": ["images/my-image.png"] +}</pre> + +<h2 id="浏览器兼容性">浏览器兼容性</h2> + +<p>For a full overview of all manifest keys and their sub-keys, see the<a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json"> full <code>manifest.json</code> browser compatibility table</a>.</p> + + + +<p>{{Compat("webextensions.manifest")}}</p> + +<h2 id="参见">参见</h2> + +<p>{{WebExtAPIRef("permissions")}} JavaScript API</p> diff --git a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.html b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.html new file mode 100644 index 0000000000..9d67a37b89 --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.html @@ -0,0 +1,45 @@ +--- +title: manifest_version +slug: Mozilla/Add-ons/WebExtensions/manifest.json/manifest_version +tags: + - WebExtensions + - 拓展 + - 附加组件 +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/manifest_version +--- +<p>{{AddonSidebar}}</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">值类型</th> + <td><code>Number</code></td> + </tr> + <tr> + <th scope="row">强制性</th> + <td>强制</td> + </tr> + <tr> + <th scope="row">示例</th> + <td> + <pre class="brush: json"> +"manifest_version": 2</pre> + </td> + </tr> + </tbody> +</table> + +<p>此键指定扩展使用的 manifest.json 的版本。</p> + +<p>目前,此值必须为 2。</p> + +<h2 id="示例">示例</h2> + +<pre class="brush: json">"manifest_version": 2 +</pre> + +<h2 id="浏览器兼容性">浏览器兼容性</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.manifest_version")}}</p> diff --git a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/name/index.html b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/name/index.html new file mode 100644 index 0000000000..3869571374 --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/name/index.html @@ -0,0 +1,43 @@ +--- +title: 名称 - name +slug: Mozilla/Add-ons/WebExtensions/manifest.json/name +tags: + - 名称 + - 附加组件 +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/name +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">值类型</th> + <td><code>字符串(String)</code></td> + </tr> + <tr> + <th scope="row">强制性</th> + <td>强制</td> + </tr> + <tr> + <th scope="row">示例</th> + <td> + <pre class="brush: json"> +"name": "附加组件的名称"</pre> + </td> + </tr> + </tbody> +</table> + +<p>附加组件的名称. 用于在用户界面和 addons.mozilla.org 网站上显示标识名称.</p> + +<p>关于本地化, 可查看 <a href="/en-US/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">localizable property</a>.</p> + +<h2 id="示例">示例</h2> + +<pre class="brush: json">"name": "插件的名称"</pre> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.name")}}</p> diff --git a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/permissions/index.html b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/permissions/index.html new file mode 100644 index 0000000000..f26782540e --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/permissions/index.html @@ -0,0 +1,182 @@ +--- +title: 权限 - permissions +slug: Mozilla/Add-ons/WebExtensions/manifest.json/permissions +tags: + - 权限 + - 附加组件 +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/permissions +--- +<p>{{AddonSidebar}}</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">值类型</th> + <td><code>数组</code></td> + </tr> + <tr> + <th scope="row">强制性</th> + <td>不强制</td> + </tr> + <tr> + <th scope="row">示例</th> + <td> + <pre class="brush: json notranslate"> +"permissions": [ + "*://developer.mozilla.org/*", + "webRequest" +]</pre> + </td> + </tr> + </tbody> +</table> + +<p>使用permissions 关键字为你的扩展请求特殊的权限。该关键字为一个字符串数列,每个字符串请求一项权限。</p> + +<p>如果你使用该关键字请求权限,浏览器可能会在安装该扩展时通知用户该扩展需求某些权限,并询问他们是否愿意给予这些权限。在插件安装之后浏览器也可能允许用户检查扩展的权限。因为要求授予权限可能会影响用户安装你的扩展的意愿,所以请求权限需要特别小心的考虑。举个例子,你想要避免请求不必要的权限,而且可以在你的扩展描述中提供你为何需要某些权限的信息。更多关于这个话题的描述你可以参考这篇提供的文章 <a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Request_the_right_permissions">请求正确的权限</a>。</p> + +<p>该关键字能够包含三种类型的权限:</p> + +<ul> + <li>主机权限</li> + <li>API 权限</li> + <li>活动标签权限</li> +</ul> + +<h2 id="主机权限">主机权限</h2> + +<p> 主机权限使用 <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">match patterns </a>指定,扩展在每一个表达式指定的网址上请求额外权限。</p> + +<p>额外权限包括:</p> + +<ul> + <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest">XMLHttpRequest</a> 和 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API">fetch</a> 用于访问无跨源限制的源文件(包括从content scripts发出的访问请求)</li> + <li>以编程方式(使用 <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript">tabs.executeScript</a>)将脚本注入到来自源服务器(origins)提供的页面的功能。</li> + <li>使用 <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest">webRequest</a> 在其主机上获取消息的能力。</li> + <li>使用 <a href="/en-US/Add-ons/WebExtensions/API/cookies">cookies</a> API 访问主机cookies的能力,只要 cookies api的权限也被请求。</li> + <li>使用无通配符(*)的全域名会绕开跟踪保护机制,但不能与 <code><all_urls></code> 共用.</li> +</ul> + +<p>Firefox浏览器,自56以后的版本,扩展都会自动获取其源的主机权限,如以下形式:</p> + +<pre class="notranslate"><code>moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/</code></pre> + +<p><code>60a20a9b-1ad4-af49-9b6c-c64c98c37920</code> 是扩展内部ID。编程时可使用 <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/extension/getURL">extension.getURL()</a> 来返回此URL路径:</p> + +<ol> + <li> + <pre class="notranslate"><code>browser.extension.getURL(""); +// </code><code>moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/</code></pre> + </li> +</ol> + +<h2 id="API_权限">API 权限</h2> + +<p>API 权限有关键字指定,每个关键字标志着一类WebExtension API 能够被使用。</p> + +<p>如下关键字是当前可用的:</p> + +<ul> + <li><code>activeTab</code></li> + <li><code>alarms</code></li> + <li><code>bookmarks</code></li> + <li><code>browsingData</code></li> + <li><code>browserSettings</code></li> + <li><code>contextMenus</code></li> + <li><code>contextualIdentities</code></li> + <li><code>cookies</code></li> + <li><code>downloads</code></li> + <li><code>downloads.open</code></li> + <li><code>find</code></li> + <li><code>geolocation</code></li> + <li><code>history</code></li> + <li><code>identity</code></li> + <li><code>idle</code></li> + <li><code>management</code></li> + <li><code>menus</code></li> + <li><code>nativeMessaging</code></li> + <li><code>notifications</code></li> + <li><code>pkcs11</code></li> + <li><code>privacy</code></li> + <li><code>proxy</code></li> + <li><code>sessions</code></li> + <li><code>storage</code></li> + <li><code>tabs</code></li> + <li><code>theme</code></li> + <li><code>topSites</code></li> + <li><code>webNavigation</code></li> + <li><code>webRequest</code></li> + <li><code>webRequestBlocking</code></li> +</ul> + +<p>在大部分情况下这种权限仅仅允许你访问API,除了以下情况:</p> + +<ul> + <li><code>tabs</code>让你可以访问 <a href="/en-US/Add-ons/WebExtensions/API/tabs"><code>一部分特权API</code></a>: <code>Tab.url</code>, <code>Tab.title</code>, and <code>Tab.faviconUrl</code>。在Firefox中你也需要<code>tabs </code>来将queryInfo中的url参数加入 <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query">tabs.query()</a></code>. 剩余的<code>tabs</code> API能在不要求任何权限的情况被使用</li> + <li><code>webRequestBlocking</code> 允许你是用“blocking”参数,所以你可以<a href="/en-US/Add-ons/WebExtensions/API/WebRequest"> 修改或取消requests</a>.</li> + <li><code>downloads.open</code> 让你使用 {{WebExtAPIRef("downloads.open()")}} API.</li> +</ul> + +<h2 id="活动标签权限">活动标签权限</h2> + +<p>该权限被指定为<code>“activeTab”</code>。如果一个扩展拥有<code>activeTab</code>权限,当用户跟该扩展交互时,扩展仅在活动标签被赋予额外权限。</p> + +<p>“用户交互”包括:</p> + +<ul> + <li>用户点击扩展的浏览器按钮或者页面按钮</li> + <li>用户选择了扩展的上下文菜单</li> + <li>用户敲击了扩展定义的快捷键</li> +</ul> + +<p>额外特权包括:</p> + +<ul> + <li>插入JavaScript或者CSS的能力, 使用 <code><a href="/en-US/Add-ons/WebExtensions/API/tabs/executeScript">browser.tabs.executeScript</a></code> 和 <code><a href="/en-US/Add-ons/WebExtensions/API/tabs/insertCSS">browser.tabs.insertCSS</a></code></li> + <li>为当前标签访问tabs API权限部分的能力,包括:Tab.url,Tab.title, 和Tab .faviconUrl。</li> +</ul> + +<p>改权限的目的是为了在不给予扩展太多权限的情况下,使得扩展能够应付大部分情况。很多扩展需要在用户要求时,在当前页面做一些处理,比如,考虑一个扩展想要在用户点击一个浏览器按钮时在当前页面运行一个脚本,如果 activeTab 权限不存在,扩展将需要请求主机权限<all_urls>,但是这给予了扩展超过其需要的权限:现在它可以在任何任何时间标签页执行脚本任何次,而不是仅仅在活动标签而且仅仅回应用户的行为。</p> + +<h2 id="剪贴板访问">剪贴板访问</h2> + +<p>有两种权限使得WebExtentsion可以跟剪贴板交互:</p> + +<ul> + <li><code>clipboardWrite</code>: 使用<code>document.execCommand("copy")</code> 或<code>document.execCommand("cut")</code> 向剪贴板写入</li> + <li><code>clipboardRead</code>: 使用 <code>document.execCommand("paste")</code> 从剪贴板读取</li> +</ul> + +<p>查看 <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard">Interact with the clipboard</a> 获取更多</p> + +<h2 id="无限制存储">无限制存储</h2> + +<p><code>unlimitedStorage</code> 权限:</p> + +<ul> + <li>能使扩展突破{{WebExtAPIRef("storage.local")}} API设定的quota限制</li> + <li>Firefox浏览器中,无须提示用户授权,便可帮助扩展创建永久保存的IndexedDB数据库 <a href="https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria#Firefox_specifics">"persistent" IndexedDB database</a></li> +</ul> + +<dl> +</dl> + +<h2 id="示例">示例</h2> + +<pre class="brush: json notranslate"> "permissions": ["*://developer.mozilla.org/*"]</pre> + +<p>请求 developer.mozilla.org 下的权限访问.</p> + +<pre class="brush: json notranslate"> "permissions": ["tabs"]</pre> + +<p>请求tabs API的权限需要部分的访问。</p> + +<pre class="brush: json notranslate"> "permissions": ["*://developer.mozilla.org/*", "tabs"]</pre> + +<p>请求以上两种访问。</p> + +<h2 id="浏览器兼容性">浏览器兼容性</h2> + +<p>本页的兼容列表是从结构化数据生成的。如果你想参与修改此数据,请参考 <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> 并发送pull 请求。</p> + +<p>{{Compat("webextensions.manifest.permissions")}}</p> diff --git a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/short_name/index.html b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/short_name/index.html new file mode 100644 index 0000000000..444dac6eaa --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/short_name/index.html @@ -0,0 +1,43 @@ +--- +title: 短名称 - short_name +slug: Mozilla/Add-ons/WebExtensions/manifest.json/short_name +tags: + - 短名称 + - 附加组件 +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/short_name +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>String</code></td> + </tr> + <tr> + <th scope="row">强制性</th> + <td>不强制</td> + </tr> + <tr> + <th scope="row">示例</th> + <td> + <pre class="brush: json"> +"short_name": "附加组件的短名称"</pre> + </td> + </tr> + </tbody> +</table> + +<p>附加组件的短名称. 一般用在 <a href="/en-US/Add-ons/WebExtensions/manifest.json/name">name</a> 特性太长的情况下. 建议短名称的长度不要超过12个字符. 如果没有在 manifest.json 主文件中声明 short_name, 并且 name 特性的值又比较长的话, 用户界面显示的时候可能只会显示一部分. </p> + +<p>关于本地化, 可查看 <a href="/en-US/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">localizable property</a>.</p> + +<h2 id="示例">示例</h2> + +<pre class="brush: json">"short_name": "附加组件的短名称"</pre> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.short_name")}}</p> diff --git a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/version/index.html b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/version/index.html new file mode 100644 index 0000000000..98028f9235 --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/version/index.html @@ -0,0 +1,49 @@ +--- +title: version +slug: Mozilla/Add-ons/WebExtensions/manifest.json/version +tags: + - version + - 版本信息 + - 附加组件 +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/version +--- +<p>{{AddonSidebar}}</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>String</code></td> + </tr> + <tr> + <th scope="row">强制性</th> + <td>强制</td> + </tr> + <tr> + <th scope="row">示例</th> + <td> + <pre class="brush: json"> +"version": "0.1"</pre> + </td> + </tr> + </tbody> +</table> + +<p>附加组件的版本, 一般格式设置为由点分隔开来数字的ASCII字符串. 关于版本格式的详细信息, 请查看 <a href="https://developer.mozilla.org/en-US/docs/Toolkit_version_format">Version format</a> .</p> + +<p>需要注意的是 Chrome 浏览器的 version 格式要求(<a href="https://developer.chrome.com/extensions/manifest/version">the syntax defined for Chrome's <code>version</code></a>)比 Firefox 浏览器的 version 格式更严格一些, 这意味这:</p> + +<ul> + <li>对 Chrome 浏览器有效的 version 特性的值一定在 Firefox 浏览器中有效</li> + <li>但对 Firefox 浏览器有效的 version 特性的值在 Chrome 浏览器中却不一定有效</li> +</ul> + +<h2 id="示例">示例</h2> + +<pre class="brush: json">"version": "0.1"</pre> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.version")}}</p> diff --git a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/web_accessible_resources/index.html b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/web_accessible_resources/index.html new file mode 100644 index 0000000000..713741a26b --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/web_accessible_resources/index.html @@ -0,0 +1,96 @@ +--- +title: web_accessible_resources +slug: Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources +tags: + - 扩展应用 +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources +--- +<p>{{AddonSidebar}}</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">类型</th> + <td><code>Array</code></td> + </tr> + <tr> + <th scope="row">是否必需</th> + <td>No</td> + </tr> + <tr> + <th scope="row">示例</th> + <td> + <pre class="brush: json no-line-numbers"> +"web_accessible_resources": [ + "images/my-image.png" +]</pre> + </td> + </tr> + </tbody> +</table> + +<h2 id="描述">描述</h2> + +<p>你有时想将资源(如图片、HTML、CSS 或 JavaScript)与你的扩展应用合并打包,让网页能够访问它们。</p> + +<p>举个例子,<a href="https://github.com/mdn/webextensions-examples/tree/master/beastify">Beastify example extension</a> 将用户选择的野兽图片来替换网页,这些图片与应用是经过合并打包的。该应用添加 <code><a href="/en-US/docs/Web/HTML/Element/img"><img></a></code>,其 <code>src</code> 指向图片,这样就使选中的图片可见了。网页要载入图片的话,这些图片就必须可经访问。</p> + +<p>通过 <code>web_accessible_resources</code>, 你列出资源,让它们可经网页访问。这些资源路径相对于 manifest.json 文件.</p> + +<p>注意,这其中不必包括 content scripts。</p> + +<p>如果你的应用要用 {{WebExtAPIRef("webRequest")}} 来重定向公共 URL(如 HTTPS) 到一个该应用中的页面, 那么应用必须将该页面列入<code>web_accessible_resources</code>。</p> + +<h3 id="使用_web_accessible_resources">使用 web_accessible_resources</h3> + +<p>例如,如果你的应用含有图片,路径为 images/my-image.png,如下所示:</p> + +<pre class="no-line-numbers">my-extension-files/ + manifest.json + my-background-script.js + images/ + my-image.png</pre> + +<p>如果要使网页能够从元素 <code><a href="/en-US/docs/Web/HTML/Element/img"><img></a></code> 的属性 <code>src</code> 指向该图片,你得写明<code>web_accessible_resources</code>,如下所示:</p> + +<pre class="brush: json no-line-numbers">"web_accessible_resources": ["images/my-image.png"]</pre> + +<p>之后,图片可通过 URL 来访问,如下所示:</p> + +<pre class="no-line-numbers">moz-extension://<extension-UUID>/images/my-image.png"</pre> + +<p><code><extension-UUID></code> 不是应用 ID,它随机生成,对应每个浏览器实例,以防网页查看浏览器安装的扩展应用来获取信息。</p> + +<div class="blockIndicator note"> +<p>Chrome 的 <code><extension-UUID></code> 是不变的。某资源如果由<code>web_accessible_resources</code> 写明,那么它可通过 <code>chrome-extension://<your-extension-id>/<path/to/resource></code> 来访问。 </p> +</div> + +<p>要获得资源的 URL,推荐用 <code><a href="/en-US/Add-ons/WebExtensions/API/runtime/getURL">runtime.getURL</a></code> 向参数传递 manifest.json 的相对路径,比如:</p> + +<pre class="brush: js no-line-numbers">browser.runtime.getURL("images/my-image.png"); +// something like: +// moz-extension://944cfddf-7a95-3c47-bd9a-663b3ce8d699/images/my-image.png</pre> + +<p>这会返回正确的 URL,不受应用运行的浏览器影响。</p> + +<h3 id="通配符">通配符</h3> + +<p><code>web_accessible_resources</code> 中的条目还可以有通配符。比如,下面的条目匹配“images/my-image.png”:</p> + +<pre class="brush: json no-line-numbers"> "web_accessible_resources": ["images/*.png"]</pre> + +<h3 id="安全">安全</h3> + +<p>注意,如果你部署了一个页面,那么任一网页可能会链接或重定向至该页面,因而它应认为任意输入(比如 POST data)的来源不可信任,这与通常网页的做法一样。</p> + +<h2 id="Example">Example</h2> + +<pre class="brush: json no-line-numbers">"web_accessible_resources": ["images/my-image.png"]</pre> + +<p>Make the file at "images/my-image.png" web accessible.</p> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.web_accessible_resources")}}</p> diff --git a/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/主页地址/index.html b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/主页地址/index.html new file mode 100644 index 0000000000..01749d5ff3 --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/manifest.json/主页地址/index.html @@ -0,0 +1,42 @@ +--- +title: homepage_url +slug: Mozilla/Add-ons/WebExtensions/manifest.json/主页地址 +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">值类型</th> + <td><code>字符串(String)</code></td> + </tr> + <tr> + <th scope="row">强制性</th> + <td>非强制</td> + </tr> + <tr> + <th scope="row">示例</th> + <td> + <pre class="brush: json"> +"homepage_url": "https://example.org/my-addon"</pre> + </td> + </tr> + </tbody> +</table> + +<p>该扩展的主页地址。</p> + +<p>如果 <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/developer">developer</a> 键存在且包含“url”属性,它将会覆盖 <code>homepage_url</code> 键。</p> + +<p>这是一个 <a href="/en-US/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">localizable property</a>.</p> + +<h2 id="示例">示例</h2> + +<pre class="brush: json">"homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/beastify"</pre> + +<h2 id="浏览器兼容性">浏览器兼容性</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.homepage_url")}}</p> |