跳转到内容

Firefox 上的 PWA

发布于 更新于

一句话: Firefox 143(2025-09-16 发布)起,Windows 用户可以把网站固定到任务栏并以 简化窗口作为 Web 应用运行;Firefox for Android 支持从清单安装 PWA;但两者都不会触发 beforeinstallprompt,安装流程代码不能假设提示一定存在。

在 Firefox 上“安装”具体指什么

Section titled “在 Firefox 上“安装”具体指什么”

根据 Firefox 143 发行说明,Windows 上的 Firefox 现在“支持把网站作为 Web 应用直接固定到 任务栏运行”——从任务栏启动的简化窗口,并保留用户已安装的附加组件。发行说明同时指出, 该功能“目前不适用于从 Microsoft Store 安装的 Firefox”。页面内没有安装图标,清单本身也 无法产生这个窗口;固定操作由用户在 Firefox 自己的界面中完成。macOS 与 Linux 上的桌面 Firefox 仍然没有清单驱动的安装流程。根据 MDN 的 BeforeInstallPromptEvent 页面,该接口 是非标准的,主要由基于 Chromium 的浏览器实现,因此任何版本的 Firefox 都不会触发它。

提供“安装应用”按钮的代码不能假设这些安装 API 一定存在:

<button id="install-button" hidden>安装应用</button>
<p id="install-instructions" hidden>
当前浏览器不支持从本页一键安装。可以收藏此页,或直接把它当作普通标签页使用——
有些浏览器会在自己的菜单里提供"添加到主屏幕"选项,但并非所有浏览器都有。
</p>
<script>
let deferredPrompt = null;
const installButton = document.getElementById('install-button');
const installInstructions = document.getElementById('install-instructions');
function showManualInstallInstructions() {
installInstructions.hidden = false;
}
if (!('onbeforeinstallprompt' in window)) {
// 此处不受支持(例如桌面 Firefox,或 Safari):该事件永远不会触发,因此转而
// 引导用户使用手动替代方案,而不是展示一个失效的安装按钮。
showManualInstallInstructions();
} else {
window.addEventListener('beforeinstallprompt', (event) => {
event.preventDefault();
deferredPrompt = event;
installButton.hidden = false;
});
installButton.addEventListener('click', async () => {
if (!deferredPrompt) return;
deferredPrompt.prompt();
deferredPrompt = null;
});
}
</script>

上面的回退文案刻意没有断言每个这样的浏览器都 有自己的“安装”菜单项:根据 MDN,桌面 Firefox 不支持从清单安装 PWA,因此诚实的指引 是“当作普通标签页使用,或收藏它”。相比之下,Firefox for Android 与 Chrome、Edge、 Opera 和三星 Internet 一起,被归为支持从清单安装 PWA 的浏览器。

根据 MDN,Firefox for Android 支持从清单安装 PWA,与 Android 上的 Chrome、Edge、 Opera 和三星 Internet 一样。桌面端,Windows 上的 Firefox 143 及之后版本提供任务栏 Web 应用(发行说明,2025-09-16);macOS 与 Linux 上的 Firefox 没有清单驱动的安装流程, 这使它成为主流桌面引擎中的例外——基于 Chromium 的桌面浏览器都支持从清单安装。

  • 永远不要把核心功能挂在“安装成功”这个前提上——桌面 Firefox 用户必须能够以普通 标签页的形式完整使用该应用。
  • 用特性检测判断 beforeinstallprompt 是否受支持,而不是假设每个浏览器都会触发 它;不受支持时转向手动说明分支。
  • 不要假设应用其余功能依赖于安装——把核心体验设计为首先能作为普通浏览器标签页 使用。
  • 不要无条件展示“安装”按钮;只在 beforeinstallprompt 确实触发后才显示它,或者 在 Firefox 上替换为特定浏览器的指引。
  • 定期复核这一结论——Mozilla 的浏览器功能集会独立于本条目未描述的底层 Web 规范 而发生变化。