Window:beforeinstallprompt 事件

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

當瀏覽器檢測到網站可以作為漸進式 Web 應用程式(PWA)安裝時,會觸發 beforeinstallprompt 事件。

此事件觸發的時間不確定,但通常在頁面載入時發生。

此事件的典型用途是當 Web 應用程式想要提供自己的應用內 UI,邀請使用者安裝應用程式,而不是使用瀏覽器提供的通用 UI。這使得應用程式能夠提供更多關於應用程式的上下文,向用戶解釋他們可能想要安裝它的原因。

在這種情況下,此事件的處理程式將:

  • 保留傳入的 BeforeInstallPromptEvent 物件的引用。
  • 顯示其應用內安裝 UI(預設應隱藏,因為並非所有瀏覽器都支援安裝)。

當用戶使用應用內安裝 UI 安裝應用程式時,應用內安裝 UI 會呼叫保留的 BeforeInstallPromptEvent 物件的 prompt() 方法來顯示安裝提示。

語法

在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。

js
addEventListener("beforeinstallprompt", (event) => { })

onbeforeinstallprompt = (event) => { }

事件型別

一個 BeforeInstallPromptEvent。繼承自 Event

Event 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", "");
});

規範

規範
清單孵化
# onbeforeinstallprompt-attribute

瀏覽器相容性

另見