Beacon API
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.
Beacon
API はウェブサーバーに非同期でブロッキングしないリクエストを送るのに使用されます。リクエストのレスポンスは求めません。XMLHttpRequest
や Fetch API により行われるリクエストとは違い、ブラウザーはビーコンのリクエストをページがアンロードされる前に開始し、完了するまで処理することを保証します。
Beacon API の主な用途は、クライアント側でのイベントやセッションデータなどの統計情報をサーバーに送ることです。これまでは、ウェブサイトはこの用途に XMLHttpRequest
を用いていましたが、ブラウザーがこれらの非同期リクエストを送信する保証がない状況がありました。(たとえば、ページがアンロードされようとしているとき) これを打開するため、ウェブサイトはリクエストを同期的にするなどの様々なテクニックに頼っていましたが、これらはレスポンシブ性に悪い影響がありました。ビーコンのリクエストは非同期かつ送信されることが保証されるので、パフォーマンスにおけるよい性質と信頼性を兼ね備えます。
この API を使用する動機と使用法の詳細は、navigator.sendBeacon()
メソッドのドキュメントを参照してください。
メモ:
この API は Web Workers では 使用できません。(WorkerNavigator
経由では公開されていません)
インターフェイス
この API では、1 個のメソッド navigator.sendBeacon()
が定義されています。
このメソッドは、URL とリクエストで送るデータの 2 個の引数をとります。データの引数は省略可能で、型は TypedArray
、DataView
、Blob
、文字列リテラル、オブジェクト、FormData
オブジェクトが使用できます。ブラウザーが正常にリクエストを送信用のキューに入れた場合は true
を返し、そうでない場合は false
を返します。
仕様書
Specification |
---|
Beacon # sendbeacon-method |
ブラウザーの互換性
BCD tables only load in the browser