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

View in English Always switch to English

Permissions-Policy: unload ディレクティブ

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

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

HTTP の Permissions-Policy ヘッダーの unload ディレクティブは、現在の文書で unload イベントハンドラーの実行を許可するかどうかを制御します。

定義されたポリシーによってこの機能の使用が許可されていない場合、その文書に登録された unload イベントハンドラーは実行されません。

unload ハンドラーの動作は信頼できず、ページがバック/フォワードキャッシュ(英語) (bfcache) に保存されるのを妨げます。これらのハンドラーをブロックすると、ページ内のサードパーティ製スクリプトが unload ハンドラーを追加していても、そのページは bfcache の対象であり続けられます。代替手段については、unload イベントの使用上のメモを参照してください。

構文

http
Permissions-Policy: unload=<allowlist>;
<allowlist>

この機能の使用を許可するオリジンのリストです。詳しくは Permissions-Policy の構文を参照してください。

デフォルトのポリシー

Chrome では、unload のデフォルトの許可リストは () です。つまり、文書がオプトインしない限り、unload ハンドラーは実行されません。Chrome は当初 * をデフォルトの許可リストとして使用していましたが、段階的に変更しました(英語)。

例

unload ハンドラーをブロックする

あるサイトが、ページを bfcache の対象に保つため、自身のページやその埋め込み iframe のいずれでも unload ハンドラーが実行されないようにしたいとします。その場合、次の HTTP レスポンスヘッダーを送信します。

http
Permissions-Policy: unload=()

unload ハンドラーを許可する

引き続き unload ハンドラーに依存しているサイトは、次の HTTP レスポンスヘッダーを送信することで、最上位のページでその実行を許可できます。

http
Permissions-Policy: unload=self

オリジンが https://example.com のオリジンをまたぐ iframe でも unload ハンドラーを許可するには、埋め込み側のページがそのオリジンを許可リストに含める必要があります。

http
Permissions-Policy: unload=(self "https://example.com")

さらに、<iframe> 要素に allow 属性を指定する必要があります。

html
<iframe src="https://example.com/embed" allow="unload"></iframe>

iframe 内で読み込まれる文書も、自身の Permissions-Policy: unload=self レスポンスヘッダーを使用して unload ハンドラーを許可する必要があります。

仕様書

この機能は、どの仕様書にも定義されていません。

ブラウザーの互換性

関連情報