Skip to main content
控制瀏覽器啟動行為,用於除錯、自動化與執行階段的實驗。 在不修改擴充功能原始碼的情況下調整瀏覽器啟動行為。Extension.js 會合併你在 extension.config.* 中設定的瀏覽器旗標,並在 devpreviewstart 流程中套用。

Firefox 有 firefox://flags 嗎?

Firefox 不像 Chromium 系列瀏覽器使用 chrome://flagsedge://flags 那樣使用 firefox://flags。Firefox 透過 about:config(偏好設定)公開執行階段的開關,並接受從命令列傳入的啟動旗標。 如果你搜尋過 firefox://flagsfirefox //flagsbrowser://flagsmozilla://flagsabout flags firefox,你很可能是想在擴充功能開發期間改變瀏覽器行為。在 Extension.js 中,你會從兩個地方著手:
  • 使用 browserFlags 來傳遞 Extension.js 啟動瀏覽器執行檔時所用的啟動旗標。
  • 使用 Firefox 偏好設定 來設定原本會放在 about:config 中、可重複套用的 Gecko 執行階段行為。
從同一份 Extension.js 專案,這兩種方式都能用於 Chrome、Edge 與 Firefox 的擴充功能開發。

範本範例

new-browser-flags

new-browser-flags template screenshot 透過一個會設定啟動行為的 new-tab 擴充功能,實際看看瀏覽器旗標的運作方式。
儲存庫:extension-js/examples/new-browser-flags

運作方式

extension.config.* 中設定旗標:
  • browser.<target>.browserFlags
  • commands.dev|start|preview.browserFlags
  • 可選的 excludeBrowserFlags,可移除預設旗標或使用者旗標(行為會因目標是 Chromium 或 Firefox 而不同)。
覆寫順序:瀏覽器預設 → 指令預設 → CLI 所選的指令情境。

旗標功能

設定範例

Chromium 與 Firefox 的行為差異

  • Chromium 系列(chromeedgechromiumchromium-based)
    • 從內建的預設旗標集開始,接著附加你的 browserFlags
    • excludeBrowserFlags 會移除符合的預設旗標(完全相符的過濾)。
    • Extension.js 自行管理 --load-extension=...,並會從使用者提供的旗標中過濾掉它。
  • Firefox/Gecko 系列(firefoxgecko-based / firefox-based)
    • 使用使用者提供的 browserFlags(沒有 Chromium 那種龐大的預設旗標組)。
    • excludeBrowserFlags 會以前綴比對的方式移除使用者旗標。

Chromium 的預設旗標

Extension.js 在啟動 Chromium 系列瀏覽器時會自動套用以下旗標。若有不需要的,使用 excludeBrowserFlags 移除即可。
在 Docker、持續整合(CI)或容器化環境中,Extension.js 也會自動套用 --no-sandbox--disable-setuid-sandbox

支援的目標與參考

在需要時對引擎類型的目標傳入執行檔旗標:
  • --chromium-binary=...
  • --gecko-binary=...

最佳實務

  • 只加入必要的旗標:減少冗長的旗標清單,降低不穩定或不可攜的設定。
  • 優先使用 excludeBrowserFlags,而不是整個取代預設:只移除會與你工作流程衝突的部分。
  • 不要手動傳 --load-extension:Extension.js 會在內部管理擴充功能載入相關旗標。
  • 針對每個瀏覽器家族驗證:在 Chromium 上有效的旗標,在 Firefox 上可能無效或被忽略。

後續步驟