Clients: claim() 方法

Baseline 已廣泛支援

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

注意:此功能僅在 Service Workers 中可用。

Clients 介面的 claim() 方法允許一個已啟用的服務工作執行緒將其自身設定為其 scope 內所有客戶端的 controller。這會在任何被該服務工作執行緒控制的客戶端上觸發 navigator.serviceWorkercontrollerchange 事件。

當服務工作執行緒首次註冊時,頁面在下次載入之前不會使用它。claim() 方法會立即使這些頁面被控制。請注意,這會導致您的服務工作執行緒控制透過網路正常載入的頁面,或者可能透過另一個服務工作執行緒載入的頁面。

語法

js
claim()

引數

無。

返回值

一個 Promise,解析為 undefined

示例

下面的示例在服務工作執行緒的 activate 事件監聽器中使用 claim(),這樣同一作用域內載入的客戶端就不需要重新載入,其 fetch 請求就會透過此服務工作執行緒。

js
self.addEventListener("activate", (event) => {
  event.waitUntil(clients.claim());
});

規範

規範
Service Workers
# clients-claim

瀏覽器相容性

另見