Firefox 調整支援瀏覽器擴充套件規格 Manifest v3,即日起開始 Manifest v3 開發者預覽計劃,收集 Firefox 使用者對 Manifest v3 實際操作意見。
Manifest v3 的發展在過去一年發生許多變化,W3C下成立了社群小組已推動跨瀏覽器網頁擴充套件 WebExtensions(WECG),因此 Firefox 如果按照過去對 Manifest v3 的實際操作,即支援 Manifest v3 並且以 Service Worker 作為 Background Page 的代替品,將會使許多使用案例面臨風險,因此 Mozilla 便在 WECG 中提案 Event Pages 代替 Background Page,而這項做法受到社群歡迎,也在 Safari 中獲得 Apple 的支持。
2018 年 Chrome 發布 Manifest v3,隨後微軟採用 Chromium 作為新瀏覽器 Edge 的基礎,以 Chromium 為基礎的瀏覽器市場佔有率突然大幅提升。Manifest v3 適用於基於 Chromium 的 Chrome、Edge 與 Opera,以及非 Chromium 陣營 Safari 和 Firefox 等瀏覽器。
在 Firefox 中,Manifest v3 成為 WebExtensions 的下一代更新,因為 Manifest v2 架構的限制,使目前有一些問題難以解決,而引入 Manifest v3 則剛好是作出改變的機會。擴充套件中的核心是 Background Page,必須在執行時持續存在,但因為記憶體和部份平台(如Android)的限制,難以保證 Background Page 的狀態,有時不可避免被終止。
在 Manifest v3 中,Mozilla 採用一種新架構,使後台劇本能夠被重新啟動,為了支援這項新設計,Mozilla 重新設計現有 API,使擴充套件能夠不需要後台劇本,直接宣告瀏覽器的行為。擴充套件的另一個核心部分是內容劇本,該劇本直接與網頁互動,Mozilla 設計了一個能夠阻擋不安全行為的新方法,在擴充套件 API 中,取消基於字串的程式碼執行。
Chrome 採用 Manifest v3 中最具爭議的變化是取消阻擋 WebRequest,雖然這做法提供一定程度的功能和靈活性,但對私隱和內容阻擋應用也造成衝擊。對此,Mozilla 會在 Manifest v3 中繼續支援阻擋 WebRequest,並且最大程度相容於其他瀏覽器,也確保內容攔截器和其他該 API 能夠執行無礙,畢竟內容阻擋是現今瀏覽器擴充套件的重要應用。
Chrome 的 Manifest v3 版本加入了 Background
Service Worker 作為 Background Page 的替代,出於相容性原因,Mozilla 也在 Firefox 中擴充 Service
Workers,但因為 Service Workers 無法完全支援 Firefox 的重要用例,尤其是在 DOM 相關的特性和 API 方面,因此在 Firefox 將會支援 Event
Pages,並且在 Firefox 現有開發者預覽版中,先不加入 Service
Workers,目的是讓開發人員可以先移植 Background Page 支援 Manifest v3,並且保留 Manifest v2 中所有 DOM 相關功能的存取權限。
Mozilla 現在釋出 Manifest v3 開發者預覽版本,以收集開發者對 Manifest v3 實作的意見,並預計今年底前向所有用戶提供 Manifest v3 的支援。