BeforeInstallPromptEvent

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

非标准:此特性未标准化。我们不建议在生产环境中使用非标准特性,因为它们浏览器支持有限,并且可能会更改或被移除。但是,在没有标准选项的特定情况下,它们可以是合适的替代方案。

BeforeInstallPromptEvent 是在用户被提示将网站“安装”到移动设备主屏幕之前,在 Window 对象上触发的 beforeinstallprompt 事件的接口。

此接口继承自 Event 接口。

Event BeforeInstallPromptEvent

构造函数

BeforeInstallPromptEvent() 非标准 实验性

创建一个新的 BeforeInstallPromptEvent 对象。

实例属性

继承其父级 Event 的属性。

BeforeInstallPromptEvent.platforms 只读 非标准 实验性

返回一个字符串数组,其中包含事件分派到的平台。这供希望向用户提供版本选择的用户代理使用,例如,“web”或“play”,允许用户在 Web 版本和 Android 版本之间进行选择。

BeforeInstallPromptEvent.userChoice 只读 非标准 实验性

返回一个 Promise,该 Promise 解析为一个对象,描述用户在被提示安装应用时的选择。

实例方法

BeforeInstallPromptEvent.prompt() 非标准 实验性

显示一个提示,询问用户是否要安装应用。此方法返回一个 Promise,该 Promise 解析为一个对象,描述用户在被提示安装应用时的选择。

示例

在以下示例中,一个应用提供自己的安装按钮,其 id"install"。最初,该按钮是隐藏的。

html
<button id="install" hidden>Install</button>

beforeinstallprompt 处理程序

  • 取消事件,这会阻止浏览器在某些平台上显示其自身的安装 UI。
  • BeforeInstallPromptEvent 对象分配给一个变量,以便以后使用。
  • 显示应用的安装按钮。
js
let installPrompt = null;
const installButton = document.querySelector("#install");

window.addEventListener("beforeinstallprompt", (event) => {
  event.preventDefault();
  installPrompt = event;
  installButton.removeAttribute("hidden");
});

当点击时,应用的安装按钮

  • 调用已存储事件对象的 prompt() 方法,以触发安装提示。
  • 通过清除 installPrompt 变量并再次隐藏自身来重置其状态。
js
installButton.addEventListener("click", async () => {
  if (!installPrompt) {
    return;
  }
  const result = await installPrompt.prompt();
  console.log(`Install prompt was: ${result.outcome}`);
  installPrompt = null;
  installButton.setAttribute("hidden", "");
});

浏览器兼容性

另见