ServiceWorkerContainer.register()

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.

实验性: 这是一项实验性技术
在将其用于生产之前,请仔细检查浏览器兼容性表格

ServiceWorkerContainer 接口的 register() 方法创建或更新一个给定 scriptURL 的ServiceWorkerRegistration

如果成功,一个服务工作者注册将提供的脚本 URL 与一个范围进行关联,后者用于导航匹配。如果该方法无法返回一个 ServiceWorkerRegistration,则返回一个 Promise

你可以从受控页无条件调用此方法,即,你不需要首先检查是否有一个有效的注册。

语法

js
ServiceWorkerContainer.register(scriptURL, options).then(
  function (ServiceWorkerRegistration) {
    // do something
  },
);

参数

scriptURL

service worker 脚本的 URL.

options 可选

注册时提供选项的配置对象。目前可用的选项包括:

  • scope: 一个 USVString,表示定义 service worker 注册范围的 URL;service worker 可以控制的 URL 范围。通常是相对 URL。默认值是基于当前的 location,并以此来解析传入的路径。

返回

返回一个 Promise 对象,值是 ServiceWorkerRegistration

示例

js
if ("serviceWorker" in navigator) {
  navigator.serviceWorker
    .register("service-worker.js", { scope: "./" })
    .then(function (registration) {
      document.querySelector("#status").textContent = "succeeded";
    })
    .catch(function (error) {
      document.querySelector("#status").textContent = error;
    });
} else {
  // The current browser doesn't support service workers.
  let aElement = document.createElement("a");
  aElement.href = `
     http://www.chromium.org/blink/serviceworker/service-worker-faq
  `;
  aElement.textContent = "unavailable";
  document.querySelector("#status").appendChild(aElement);
}

规范

Specification
Service Workers
# navigator-service-worker-register

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
register

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support