InstallEvent - 表示在 ServiceWorker 调度的安装操作
这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
InstallEvent
接口是传递给 oninstall
处理程序的参数,表示在 ServiceWorker
的 ServiceWorkerGlobalScope
上调度的安装操作。作为 ExtendableEvent
的子接口,它确保在安装期间不调度诸如 FetchEvent
之类的功能事件。
此接口继承自 ExtendableEvent
接口。
构造函数
InstallEvent.InstallEvent()
创建一个新的 InstallEvent
对象。
属性
从其祖先接口 Event
继承了属性。
InstallEvent.activeWorker
只读
返回当前正在控制页面的 ServiceWorker
。
方法
从其父接口 ExtendableEvent
继承了方法。
实例
此代码段来自 服务 worker 预取例子(请参阅 预取的在线运行实例。)代码在 ServiceWorkerGlobalScope.oninstall
中调用 ExtendableEvent.waitUntil()
并延迟处理 ServiceWorkerRegistration.installing
安装的 worker,直到传递的 promise 成功解析。在获取和缓存所有资源或发生任何异常时,promise 将解析。
该代码段还显示了服务 worker 使用的版本控制缓存的最佳实践。虽然此示例只有一个缓存,但您可以将此方法用于多个缓存。该代码将缓存的速记标识符映射到特定的版本化缓存名称。
注意:在 Google Chrome 中,通过
chrome://serviceworker-internals
访问的相关服务 worker 的 “Inspect” 界面,可以看到记录的语句。
var CACHE_VERSION = 1;
var CURRENT_CACHES = {
prefetch: 'prefetch-cache-v' + CACHE_VERSION
};
self.addEventListener('install', function(event) {
var urlsToPrefetch = [
'./static/pre_fetched.txt',
'./static/pre_fetched.html',
'https://www.chromium.org/_/rsrc/1302286216006/config/customLogo.gif'
];
console.log('处理安装事件。预取资源:', urlsToPrefetch);
event.waitUntil(
caches.open(CURRENT_CACHES['prefetch']).then(function(cache) {
cache.addAll(urlsToPrefetch.map(function(urlToPrefetch) {
return new Request(urlToPrefetch, {mode: 'no-cors'});
})).then(function() {
console.log('已获取并缓存所有资源。');
});
}).catch(function(error) {
console.error('预获取失败:', error);
})
);
});
规范
规范 | 状态 | 备注 |
---|---|---|
Service Workers | 编者的草案 | 在 2015 年 5 月之前,install 事件是 ExtendableEvent 的一个实例,而不是它的子接口。 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 40 | 未知 | 441 | 不支持 | 27 | 不支持 |
InstallEvent() constructor. | 40 | 未知 | 441 | 不支持 | 27 | 不支持 |
activeWorker | 40 | 未知 | 441 | 不支持 | 27 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 40 | 40 | 未知 | 44 | 未知 | 27 | 不支持 |
InstallEvent() constructor. | 40 | 40 | 未知 | 44 | 未知 | 27 | 不支持 |
activeWorker | 40 | 40 | 未知 | 44 | 未知 | 27 | 不支持 |
1. Firefox 45 和 52 扩展支持版本(ESR)中已禁用服务 worker(和推送)。