このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

BeforeInstallPromptEvent

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

非標準: この機能は標準化されていません。非標準の機能はブラウザーの対応が限られ、将来的に変更または削除される可能性があるため、本番環境での使用は推奨されません。ただし、標準の選択肢が存在しない特定のケースでは、有効な代替手段となる場合があります。

BeforeInstallPromptEventbeforeinstallprompt イベントのインターフェイスであり、モバイル端末でユーザーにウェブサイトのホーム画面への「インストール」を促す前に、Window オブジェクトに対して発生します。

このインターフェイスは、Event インターフェイスを継承しています。

Event BeforeInstallPromptEvent

コンストラクター

BeforeInstallPromptEvent()

新しい BeforeInstallPromptEvent オブジェクトを生成します。

インスタンスプロパティ

親である Event から継承したプロパティがあります。

BeforeInstallPromptEvent.platforms 読取専用

イベントが配信されたプラットフォームを含む文字列の配列を返します。これは、例えば "web" や "play" といったバージョンの選択肢をユーザーに表示したいユーザーエージェント向けに提供されており、これによりユーザーはウェブ版と Android 版の間で選択できるようになります。

BeforeInstallPromptEvent.userChoice 読取専用

アプリのインストールを促された際、ユーザーが選択した内容を説明したオブジェクトに解決される Promise を返します。

インスタンスメソッド

BeforeInstallPromptEvent.prompt()

ユーザーにアプリのインストールを希望するかどうかを尋ねるプロンプトを表示させます。このメソッドは、アプリのインストールを促された際のユーザーの選択内容を説明したオブジェクトに解決される Promise を返します。

次の例では、アプリが独自のインストールボタンを提供しており、その id"install" となっています。最初は、このボタンは非表示になっています。

html
<button id="install" hidden>インストール</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(`インストールプロンプト: ${result.outcome}`);
  installPrompt = null;
  installButton.setAttribute("hidden", "");
});

ブラウザーの互換性

関連情報