每 10 秒一次主动选择:DMA 如何让 Firefox 重新回到用户桌面

2026-05-13 26 预计阅读时间:1 分钟
来源:oschina.net AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:7 分钟

欧盟《数字市场法案》(DMA)生效两年多了,很多人以为它只是纸面规则。Mozilla 刚发布的最新数据打消了这个印象——用户每 10 秒就通过 DMA 浏览器选择界面主动选一次 Firefox,累计超过 600 万次。更关键的是,这些用户的留存率明显高于其他渠道来的用户。这不是被动的默认值,是真实的偏好表达。

选择界面不是摆设

DMA 要求苹果、Google 等平台守门人(gatekeeper)在系统首次设置或更新时弹出浏览器选择界面,列出本地可用浏览器供用户挑选。听起来简单,但此前 iOS 上 Safari 的默认地位几乎不可动摇——用户要么不知道可以换,要么换的路径藏在深层设置里。

选择界面把"换浏览器"从三步隐藏操作变成了一步显式动作。Mozilla 的数据验证了这一点:600 万次选择意味着大量用户在看到选项后,确实点击了 Firefox,而不是随手跳过。

留存率才是硬指标

下载量容易刷,留存率才说明问题。Mozilla 披露,通过选择界面来的 Firefox 用户留存率更高。这背后的逻辑很直白:

  • 主动选择 > 被动默认。用户在多个选项中明确点了 Firefox,说明有意图——可能是隐私偏好、可能是对 Safari/Chrome 的不满,也可能只是想试试。有意图的用户更不容易流失。
  • 选择界面过滤了无意识用户。那些随手选默认的人不会出现在这 600 万里,留下的是做出决策的人,决策本身就绑定了一定的忠诚度。

对开发者来说,这个信号比市场份额数字更有价值:你的用户群体里,Firefox 用户的"认真程度"可能正在上升。

开发者该做什么准备

更多 Firefox 用户意味着前端兼容性不能再只盯着 Chrome。以下是几个值得立刻检查的点:

1. 用 Feature Detection 替代 Browser Sniffing

如果你的站点还在用 navigator.userAgent 判断功能支持,现在就该改。Firefox 和 Chrome 在同一 API 上的支持节奏不同,硬编码浏览器名只会制造假 bug。

// ❌ 旧做法:按浏览器名分支,Firefox 会踩坑
if (navigator.userAgent.includes('Chrome')) {
  enableNewFeature();
}

// ✅ 新做法:按能力分支,任何浏览器只要支持就能用
if ('EyeDropper' in window) {
  enableEyeDropper();
}

// 更通用的能力检测模板
function supportsAPI(apiName, scope = window) {
  return apiName in scope && typeof scope[apiName] === 'function';
}

// 批量检测,输出兼容性报告
const apis = ['EyeDropper', 'ViewTransition', 'SharedStorage'];
const report = apis.map(api => ({
  api,
  supported: supportsAPI(api)
}));
console.table(report);

把这段代码丢到你的入口页面试一下,你会立刻看到 Firefox 和 Chrome 的差异在哪里。

2. 在 CI 里加入 Firefox 无头测试

大多数项目的 CI 只跑 Chrome 无头测试。加一行 Firefox 配置的成本很低,收益是提前捕获兼容性问题:

# GitHub Actions 示例:同时跑 Chrome 和 Firefox 无头测试
jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        browser: [chrome, firefox]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - name: Install browsers
        run: |
          if [ "$BROWSER" = "firefox" ]; then
            npx playwright install firefox
          else
            npx playwright install chromium
          fi
        env:
          BROWSER: ${{ matrix.browser }}
      - run: npx playwright test --project=${{ matrix.browser }}

Playwright 对 Firefox 的无头支持已经稳定,不需要额外折腾 WebDriver。

3. Linux 上快速设置 Firefox 为默认浏览器(给团队推一条命令)

如果你在团队内部推广 Firefox,一条命令比口头建议有效:

# Debian/Ubuntu:设置 Firefox 为系统默认浏览器
xdg-settings set default-web-browser firefox.desktop

# 验证当前默认浏览器
xdg-settings get default-web-browser

# macOS 用户可以在 Firefox 内操作:
# Settings > General > Make Default(会跳转系统偏好设置)

还需要注意的边界

  • 600 万次选择集中在欧盟地区,全球其他市场没有 DMA 选择界面,Firefox 增长模式完全不同。
  • iOS 上的 Firefox 仍然基于 WebKit 引擎,这是苹果对第三方浏览器的硬性限制。DMA 第二轮执法可能改变这一点,但目前 iOS Firefox 和 iOS Safari 的渲染内核一致,兼容性差异主要在 UI 和隐私功能层面。
  • 选择界面的设计细节影响很大。选项排列顺序、默认高亮、说明文案都会左右用户选择,Mozilla 的数据反映的是当前界面设计下的结果,不是某种"自然偏好"。

检查清单

在 DMA 带来的浏览器多样性趋势下,前端团队可以做这几件事:

动作 优先级 预估耗时
把 UA sniffing 改成 feature detection 1-2 天
CI 加入 Firefox 无头测试 半天
console.table 做一次 API 兼容性扫描 1 小时
检查站点在 Firefox 下的视觉差异 2 小时
监控 Firefox 用户占比变化(Analytics) 持续

DMA 证明了一件事:当选择权被真正交到用户手里,用户会用。600 万次不是偶然,是默认垄断被打破后的自然释放。作为开发者,现在让站点在 Firefox 下跑得和 Chrome 一样好,不是公益,是务实。


相关推荐