From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- .../webextensions/manifest.json/author/index.html | 44 ++++++++ .../manifest.json/background/index.html | 93 +++++++++++++++++ .../browser_specific_settings/index.html | 88 ++++++++++++++++ .../manifest.json/homepage_url/index.html | 46 +++++++++ .../add-ons/webextensions/manifest.json/index.html | 113 +++++++++++++++++++++ .../manifest.json/options_ui/index.html | 110 ++++++++++++++++++++ 6 files changed, 494 insertions(+) create mode 100644 files/zh-tw/mozilla/add-ons/webextensions/manifest.json/author/index.html create mode 100644 files/zh-tw/mozilla/add-ons/webextensions/manifest.json/background/index.html create mode 100644 files/zh-tw/mozilla/add-ons/webextensions/manifest.json/browser_specific_settings/index.html create mode 100644 files/zh-tw/mozilla/add-ons/webextensions/manifest.json/homepage_url/index.html create mode 100644 files/zh-tw/mozilla/add-ons/webextensions/manifest.json/index.html create mode 100644 files/zh-tw/mozilla/add-ons/webextensions/manifest.json/options_ui/index.html (limited to 'files/zh-tw/mozilla/add-ons/webextensions/manifest.json') diff --git a/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/author/index.html b/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/author/index.html new file mode 100644 index 0000000000..a99d8438e8 --- /dev/null +++ b/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/author/index.html @@ -0,0 +1,44 @@ +--- +title: 作者 +slug: Mozilla/Add-ons/WebExtensions/manifest.json/author +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/author +--- +
+
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
型別String
強制No
範例 +
+"author": "cool puppy"
+
+ +

套件作者,用來顯示在瀏覽器的用戶介面中。如果有提供 developer 鍵而且裡面包含 "name" 屬性,那會覆蓋author鍵。不能指定多個作者。

+ +

這是一個可侷限的屬性

+
+ +

 

+ +

範例

+ +
"author": "cool puppy"
+ +

瀏覽器兼容

+ + + +

{{Compat("webextensions.manifest.author")}}

diff --git a/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/background/index.html b/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/background/index.html new file mode 100644 index 0000000000..d02b6eb600 --- /dev/null +++ b/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/background/index.html @@ -0,0 +1,93 @@ +--- +title: background +slug: Mozilla/Add-ons/WebExtensions/manifest.json/background +tags: + - 擴充套件 +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/background +--- +
+
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
型別Object
強制No
範例 +
+"background": {
+  "scripts": ["background.js"]
+}
+
+ +

background 鍵來引入一個或多個後端腳本,還有一個選擇性的套件後端頁面。

+ +

後端腳本是用來放置一些需要維護長期狀態或是進行長期操作的程式碼,它麼的生命週期跟任何網頁或瀏覽器視窗是獨立的。

+ +

後端腳本會在套件一被讀取就被讀入,一直到套件被禁用或移除才會卸載。只要你有請求對應的權限你可以在這個腳本裡使用任何擴充套件 APIs。

+ +

更多細節,查看套件解析的"後端頁面"章節。

+ +

background 鍵是一個物件,可能包含下列二屬性其中之一,兩者都是選擇性的:

+ + + + + + + + + + + + +
"scripts" +

一個字串組成的陣列,每個都是 JavaScript 原始碼的路徑。路徑是 manifest.json 檔案自身的相對路徑。這些是會被套件讀取的後端腳本。

+ +

腳本共用全局 window

+ +

腳本根據陣列裡的順序讀入。

+ +

註:Firefox 版本50以前有一個錯誤 當 Firefox 除錯器開啓時,腳本並不總是按照陣列裡的順序讀入。要解決這個錯誤,你可以用 "page" 屬性並且在頁面中透過 <script> 標籤讀入後端腳本。這個錯誤在 Firefox 50 被修正,從那開始腳本總是會依照陣列中的順序讀入。

+ +
+

註: 如果你想要用<script>標籤從遠端取得一個腳本(例如 <script src = "https://code.jquery.com/jquery-1.7.1.min.js">),你必須要修改套件 manifest.json 中的 content_security_policy 鍵。

+
+
"page" +

如果你指定 "scripts",那麼爲了讓你的腳本執行一個空白頁面會被建立。

+ +

如果頁面中需要某些內容,你可以用 "page" 選項定義自己的頁面。

+ +

如果你用了這個屬性,你就不能透過 "scripts" 來指定後端腳本。但是你可以像一般的網頁一樣在頁面中引入你自己的腳本。

+
+ +

範例

+ +
  "background": {
+    "scripts": ["jquery.js", "my-background.js"]
+  }
+ +

讀取兩個後端腳本。

+ +
"background": {
+    "page": "my-background.html"
+  }
+ +

讀取一個自訂的後端頁面。

+ +

瀏覽器兼容

+
+ + + +

{{Compat("webextensions.manifest.background", 10)}}

diff --git a/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/browser_specific_settings/index.html b/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/browser_specific_settings/index.html new file mode 100644 index 0000000000..7a96adfecc --- /dev/null +++ b/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/browser_specific_settings/index.html @@ -0,0 +1,88 @@ +--- +title: applications +slug: Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings +tags: + - 擴充套件 +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings +--- +
+
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
型別Object
強制通常是不強制(請看你什麼時候會需要 Add-on ID?)。在 Firefox 48(桌面)前以及Android版Firefox 是強制的。
範例 +
+"applications": {
+  "gecko": {
+    "id": "addon@example.com",
+    "strict_min_version": "42.0"
+  }
+}
+
+ +

敘述

+ +

applications 鍵包含了詳細描述特定應用的鍵。

+ +

目前這只包含了一個鍵,gecko,它包含4個string參數:

+ + + +

查看可用Gecko版本

+ +

套件ID格式

+ +

套件ID格式必須是下列其中一種:

+ + + +

後者比較容易產生與操作。小心,在這裡使用真實信箱地址可能會引來垃圾信件。

+ +

例如:

+ +
"id": "extensionname@example.org",
+
+"id": "{daf44bf7-a45e-4450-979c-91cf07434c3d}"
+ +

 

+ +

範例

+ +

包含所有可用鍵的範例。註:大多數套件會忽略 strict_max_versionupdate_url

+ +
"applications": {
+  "gecko": {
+    "id": "addon@example.com",
+    "strict_min_version": "42.0",
+    "strict_max_version": "50.*",
+    "update_url": "https://example.com/updates.json"
+  }
+}
+ +

瀏覽器兼容

+
+ + + +

{{Compat("webextensions.manifest.browser_specific_settings")}}

diff --git a/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/homepage_url/index.html b/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/homepage_url/index.html new file mode 100644 index 0000000000..4a9b065496 --- /dev/null +++ b/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/homepage_url/index.html @@ -0,0 +1,46 @@ +--- +title: homepage_url +slug: Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url +tags: + - 擴充套件 +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url +--- +
+
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
型別String
強制No
範例 +
+"homepage_url": "https://example.org/my-addon"
+
+ +

套件首頁的URL。

+ +

如果有 developer 鍵且它包含 "url" 屬性,這會覆蓋 homepage_url 鍵。

+ +

這是一個可侷限的屬性

+ +

範例

+ +
"homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/beastify"
+ +

瀏覽器兼容性

+
+ + + +

{{Compat("webextensions.manifest.homepage_url")}}

diff --git a/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/index.html b/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/index.html new file mode 100644 index 0000000000..23eda6a41c --- /dev/null +++ b/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/index.html @@ -0,0 +1,113 @@ +--- +title: manifest.json +slug: Mozilla/Add-ons/WebExtensions/manifest.json +tags: + - Add-ons + - Extensions + - NeedsTranslation + - TopicStub + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json +--- +
{{AddonSidebar}}
+ +

manifest.json 是所有採用 WebExtension API 的擴充功能中、唯一一個必須包含的檔案。

+ +

你可透過 manifest.json 為擴充功能指定名稱(name)、版本(version)這類的基本元資料(metadata),也可指定擴充功能的一些相關功能,例如像是背景腳本(background scripts)、內容腳本(content scripts)、瀏覽器動作(browser actions)等等。

+ +

這是個採用 JSON 格式的檔案,但有個例外:它可接受含有 "//" 這種格式的註解文字。

+ +

manifest.json 可採用的鍵值如下所列:

+ +
{{ ListSubpages ("/en-US/Add-ons/WebExtensions/manifest.json") }}
+ +
 
+ +

"manifest_version""version" 和 "name" 是一定要設定的鍵值。另外,如果有設定 "_locales" directory ,就一定要設定 "default_locale" ,否則就是這兩個鍵值都不做設定。 Google Chrome, 並不支援 "applications" ,但針對 Firefox 48 之前及 Android 的版本,則必須設置這個鍵值。

+ +

你可透過擴充功能中的 JavaScript,藉由 {{WebExtAPIRef("runtime.getManifest()")}} 這個函式來存取擴充功能裡的 manifest :

+ +
browser.runtime.getManifest().version;
+ +

範例

+ +

以下程式碼顯示的是一般 manifest 鍵值的基本語法。請注意,這個範例並不是讓你用來直接複製貼上的,你必須根據所開發的擴充功能,填入相應的鍵值、關於擴充功能的完整範例,請參見 擴充功能範例

+ +
{
+  "applications": {
+    "gecko": {
+      "id": "addon@example.com",
+      "strict_min_version": "42.0"
+    }
+  },
+
+  "background": {
+    "scripts": ["jquery.js", "my-background.js"],
+    "page": "my-background.html"
+  },
+
+  "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",
+
+  "web_accessible_resources": ["images/my-image.png"]
+}
+ +

瀏覽器相容性

+ +

若想對所有的 manifest 鍵值及其子健有個完整的概念,可參見 完整 manifest.json 瀏覽器相容表

+ + + +

{{Compat("webextensions.manifest")}}

diff --git a/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/options_ui/index.html b/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/options_ui/index.html new file mode 100644 index 0000000000..7a376817f1 --- /dev/null +++ b/files/zh-tw/mozilla/add-ons/webextensions/manifest.json/options_ui/index.html @@ -0,0 +1,110 @@ +--- +title: options_ui +slug: Mozilla/Add-ons/WebExtensions/manifest.json/options_ui +tags: + - 擴充套件 +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/options_ui +--- +
+
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
型別Object
強制No
範例 +
+"options_ui": {
+  "page": "options/options.html"
+}
+
+ +

options_ui 鍵來定義套件的選項頁面

+ +

選項頁面包含了套件的設定。用戶可以從套件管理員進入這個畫面,而你可以用{{WebExtAPIRef("runtime.openOptionsPage()")}}打開它。

+ +

指定 options_ui 爲一個與套件打包在一起的HTML檔案路徑。就像一般的網頁一樣,HTML檔案可包含CSS與JavaScript檔案。跟普通頁面不同的是,它可以使用所有被授權套件APIs。 不過,它執行的作用域不同於你的後端腳本。

+ +

如果你想在選項頁面後端腳本的JavaScript裡共用資料或函數,你可以透過用{{WebExtAPIRef("extension.getBackgroundPage()")}}與後端腳本的 Window 關聯、用{{WebExtAPIRef("extension.getViews()")}}與任何套件內腳本的{{domxref("Window")}}關聯來實現。你也可以透過 runtime.sendMessage()runtime.onMessage,跟(或)runtime.connect()在選項頁面與後端的頁面的JavaScript之間溝通。
+ 後者(或是runtime.Port)也可以用來在後端腳本內容腳本之間共用選項。

+ +

一般要儲存選項頁面的選項變動時,你要可能會用 storage APIstorage.sync(如果你想要在所有用戶登入的瀏覽器實例之間同步設定的話),或者透過 storage.local (如果設定是針對目前身份或機器)。而如果你希望你的後端腳本(或內容腳本)監聽該變化,你可以加上 storage.onChanged 監聽器。

+ +

語法

+ +

options_ui 鍵是一個包含了下列內容的物件:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
browser_styleBoolean +

可選,預設爲 true

+ +

用這個來替你的頁面引入一個樣式表,使你的頁面與瀏覽器UI以及其他用 browser_style 的套件看起來一致。雖然它預設是true還是建議你加入這個屬性。

+ +

在 Firefox 裡,樣式表可以在 chrome://browser/content/extension.css 或 chrome://browser/content/extension-mac.css(OS X)查看。設定尺寸的時候注意到這個樣式表目前會做這個設定box-sizing: border-box (查看 box-sizing)。

+ +

Firefox風格指南寫到一些你可以應用到彈出視窗裡面的元素上來變成特定樣式的class。

+
open_in_tabBoolean +

可選,預設爲 false

+ +

如果設爲 true,選項頁面會在普通的瀏覽器頁籤開啓而不是整合在瀏覽器的套件管理員裡。

+
pageString +

強制。

+ +

包含選項頁面細項的HTML檔案路徑。

+ +

這個路徑是 manifest.json 的相對路徑。

+
+ +

範例

+ +
  "options_ui": {
+    "page": "options/options.html"
+  }
+ +

瀏覽器兼容性

+
+ + + +

{{Compat("webextensions.manifest.options_ui")}}

+ +

See also

+ + -- cgit v1.2.3-54-g00ecf