Firefox addon 介紹
附加元件:
Firefox 附加元件通常分為 Extensions,然後是其他型別的 Firefox 附加元件。
擴充套件
擴充套件允許通過新增或修改 Firefox 的功能來定製 Firefox。可以通過擴充套件完成的一些型別的事情包括:
- 更改特定網站的顯示方式,內容或與之互動的方式。
- 自定義 Firefox 使用者介面
- 為 Firefox 新增其他功能
- 更改現有 Firefox 功能的功能
Firefox 擴充套件主要是用 JavaScript 編寫的,並新增了一些 JavaScript API。
棄用和刪除除 WebExtensions 之外的所有型別的擴充套件
Firefox 附加元件,特別是擴充套件,目前處於不穩定狀態。Mozilla 已經宣佈並確認他們已經棄用了除 WebExtensions 之外的所有型別的 Firefox 擴充套件,並且所有基於非 WebExtensions 的擴充套件都將在 Firefox 57 中被禁用,計劃於 2017 年 11 月 14 日推出 。
擴充套件型別
Firefox 有四種型別的擴充套件(所有擴充套件通常稱為附加元件):
-
WebExtensions :向前發展,WebExtensions 是唯一支援的 Firefox 擴充套件型別。這些載入項由 manifest.json 檔案描述。此 API 類似於用於 Google Chrome 擴充套件程式的 API。除了 Javascript 之外,這些載入項還使用 HTML 和 CSS。雖然 Mozilla 已宣告此 API 是 Firefox 擴充套件的未來,但此 API 仍處於開發階段。目前,你可能最好使用 Firefox Developer Edition 或 Firefox Nightly 開發和測試 WebExtension 外掛。你還應該仔細記錄你希望使用的功能所需的 Firefox 版本。此資訊包含在 MDN 文件頁面的瀏覽器相容性部分中。
WebExtensions 使用與其他三種型別的擴充套件明顯不同的 API。故意,沒有能力使用任何其他附加型別提供的介面。
-
附加 SDK :[ 已棄用; 計劃刪除 ]這些附加元件由 package.json 檔案描述,該檔案最初是通過執行
jpm init
生成的。這些擴充套件通常使用require()
載入高階或低階 API 以與 Firefox 連線。除了 Javascript 之外,這些載入項還使用 HTML 和 CSS。目前,這些附加元件在載入到jpm run
進行測試時被包裝到自舉擴充套件中,或者由jpm xpi
合併到 .xpi 檔案中進行分發(即上傳到 AMO / Mozilla)。換句話說,它們是帶有 SDK 包裝器的自舉擴充套件。只要擴充套件不使用
require("chrome")
,或者依賴於 XUL , XPCOM 和 XBL ,Mozilla 似乎致力於繼續支援基於附加 SDK 的擴充套件。可以在引導擴充套件中完成的大多數事情可以在基於 Add-on SDK 的擴充套件中完成。但是,許多此類事情繞過了 SDK,這會損害使用 Add-on SDK 的大部分好處。
-
Bootstrapped :[ 已棄用; 計劃刪除 ]這些擴充套件通常也稱為無重啟,因為它們是第一種型別的 Mozilla 擴充套件,它不需要重新啟動應用程式來載入/解除安裝附加元件。然而,restartless 是它們如何運作的描述符。使用
restartless
作為此類附加元件的名稱會讓人感到困惑,因為 Add-on SDK 和 WebExtension 附加元件也不需要在載入或解除安裝載入項時重新啟動應用程式。出於這個原因,有一種趨勢是不再使用無重啟作為這種型別的附加元件的名稱。除了 Javascript 之外,這些載入項還使用 HTML 和 CSS。許多人還使用 XUL 與 Firefox 互動。
這些附加元件有一個名為 bootstrap.js 的 JavaScript 檔案,它必須包含為附加元件
startup()
,shutdown()
,install()
和uninstall()
呼叫的入口點(函式) 。這些載入項包含一個描述載入項的 install.rdf 檔案。它們通常(但不總是)也包含 chrome.manifest 檔案,該檔案描述擴充套件中的檔案和目錄如何與 Mozilla 應用程式(例如 Firefox)相關。
大多數(但不是全部)可以在 overlay / XUL / Legacy 擴充套件中完成的事情可以在 bootstrapped 附加元件中完成。可以在附加 SDK 中完成的任何操作都可以在引導擴充套件中完成(附加 SDK 擴充套件是帶有一些基於 JavaScript 的 API 層的引導附加元件)。
Mozilla 表示他們計劃棄用 “依賴於 XUL , XPCOM和 XBL的附加元件 ”。雖然並非所有引導附加元件都依賴於這些技術,但引導附加元件的執行傾向於比 Add-on SDK 和 WebExtension 附加元件更低的級別。因此,他們更有可能使用這些技術。雖然有些人認為所有自舉附加元件都計劃被棄用,但目前尚不清楚是否屬實。畢竟,Add-on SDK 擴充套件不會被棄用(除非他們使用
require("chrome")
,或者依賴於 XUL,XPCOM 或 XBL),並且所有附加 SDK 擴充套件都是自舉擴充套件,只需使用 SDK 包裝器。 -
Overlay / XUL / Legacy :[ 已棄用; 定於去除這些附加元件包含的 install.rdf 描述附加和檔案 chrome.manifest 用於 檔案來描述該載入項的檔案如何與(例如疊加)應用程式的檔案。應用程式的載入項功能如何完全依賴於 chrome.manifest 檔案中描述的關係。唯一的例外是一些事情,例如擴充套件的圖示和描述擴充套件的選項的檔案,這些選項在 install.rdf 檔案中指出。這些擴充套件以非常低的級別與應用程式(例如 Firefox)互動。這往往會使他們在對應用程式進行更改時更容易中斷。
除了 Javascript 之外,這些附加元件還使用 XUL,HTML 和 CSS。有些人還使用 XPCOM 和 XBL 。
計劃棄用所有 Overlay / XUL / Legacy 擴充套件。
其他型別的 Firefox 附加元件
當大多數人考慮 Firefox 附加元件時,他們正在考慮上述擴充套件。但是,還有一些其他型別的 Firefox 附加元件:
- 主題 [ 部分棄用 ]允許自定義 Firefox 的外觀。主要是通過為瀏覽器的所有部分提供不同的 CSS 規則。 完整主題已棄用,並計劃部分替換為當前不存在的介面 。
- 適用於 Android 的 Firefox 移動附加元件 。目前,支援所有無重啟的 Firefox 擴充套件型別。
- 搜尋引擎外掛用於將其他搜尋引擎新增到瀏覽器的搜尋欄。
- 使用者詞典允許在其他語言中使用拼寫檢查。
- 語言包為 Firefox 使用者介面新增其他語言。
- 外掛是共享庫,用於顯示應用程式本身無法本機顯示的內容。
這個示例主要是通過一些修改來複制的,來自我的 Makyen’s,回答 stackoverflow 問題 。
此內容的某些部分是複製的,或至少基於 Mozilla Developer Network(MDN)
上的 Add-on 頁面 。
這最初是由 Makyen 在 firefox-addon 標籤的備註部分發布的。然後由 OndřejDoněk修改,後者刪除了額外的 for
。在由 nus執行的單個編輯中,它從備註移動到標題為簡介的固定示例。不幸的是,這樣做會導致系統丟失歸因資訊。