Beacon API

Baseline 已廣泛支援

此功能已成熟,可跨多種裝置和瀏覽器版本工作。它自 ⁨2018 年 4 月⁩ 起已在所有瀏覽器中可用。

Beacon API 用於向 Web 伺服器傳送非同步且非阻塞的請求。該請求不期望得到響應。與使用 XMLHttpRequestFetch API 發出的請求不同,瀏覽器保證在頁面解除安裝之前發起信標請求,並確保其完成。

Beacon API 的主要用例是將客戶端事件或會話資料等分析資訊傳送到伺服器。過去,網站一直使用 XMLHttpRequest 來實現此目的,但在某些情況下(例如,當頁面即將解除安裝時),瀏覽器並不保證會發送這些非同步請求。為了解決這個問題,網站不得不採用各種技術,例如使請求同步,這會嚴重影響響應速度。由於信標請求既是非同步的又是保證傳送的,因此它們結合了良好的效能特徵和可靠性。

有關此 API 的動機和用法的更多詳細資訊,請參閱 navigator.sendBeacon() 方法的文件。

注意: 此 API 在 Web Workers不可用(未透過 WorkerNavigator 暴露)。

介面

此 API 定義了一個單一方法:navigator.sendBeacon()

該方法接受兩個引數:URL 和要傳送到請求中的資料。資料引數是可選的,其型別可以是字串、ArrayBufferTypedArrayDataViewReadableStreamBlobFormData 物件或 URLSearchParams 物件。如果瀏覽器成功將請求加入佇列以進行傳輸,則該方法返回 true;否則,它返回 false

規範

規範
Beacon
# sendbeacon-method

瀏覽器相容性

另見