ServiceWorkerContainer.register()
Experimental: 这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
ServiceWorkerContainer
接口的 register()
方法创建或更新一个给定 scriptURL 的ServiceWorkerRegistration
。
如果成功,一个服务工作者注册将提供的脚本 URL 与一个范围进行关联,后者用于导航匹配。如果该方法无法返回一个 ServiceWorkerRegistration
,则返回一个 Promise
。
您可以从受控页无条件调用此方法,即,您不需要首先检查是否有一个有效的注册。
语法
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
(en-US) 对象,值是 ServiceWorkerRegistration
。
示例
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 |
浏览器兼容性
BCD tables only load in the browser