InstallEvent

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

该参数传递到 oninstall 事件处理程序,InstallEvent接口表示一个 ServiceWorker ServiceWorkerGlobalScope 上分派的安装操作。作为 ExtendableEvent 的一个子类,它确保在安装期间不调度诸如 FetchEvent 之类的功能事件。

该接口继承自 ExtendableEvent 接口。

构造函数

InstallEvent.InstallEvent()
创建一个新的InstallEvent对象。

属性

从它的祖先Event继承属性。

InstallEvent.activeWorker 只读
返回当前处于激活状态,控制页面的ServiceWorker

方法

从它的父类ExtendableEvent继承方法。

示例

该代码片段来自 service worker prefetch sample (请参阅 prefetch running live)。代码在ServiceWorkerGlobalScope.oninstall中调用ExtendableEvent.waitUntil(any value),并延迟将ServiceWorkerRegistration.installing worker视为已安装的,直到传递的promise被成功地resolve。当所有资源已经获取并缓存,或者有任何异常发生时,promise才会resolve。

该代码片段也展示了服务工作线程使用的缓存版本控制的最佳实践。虽然此示例只有一个缓存,但您可以将此方法用于多个缓存。 代码将缓存的速记标识映射到特定的版本化缓存名称。

Note: Logging statements are visible in Google Chrome via the "Inspect" interface for the relevant service worker accessed via chrome://serviceworker-internals.

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('Handling install event. Resources to pre-fetch:', 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('All resources have been fetched and cached.');
      });
    }).catch(function(error) {
      console.error('Pre-fetching failed:', error);
    })
  );
});

规范

Specification Status Comment
Service Workers Working Draft As of May 2015, the install event is an instance of ExtendableEvent rather than a child of it.

浏览器兼容性

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 40.0 44.0 (44.0)[1] 未实现 24 未实现
Feature Android Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support ? 44.0 (44.0) (Yes) 未实现 ? 未实现 40.0

[1] Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR.)

参见

文档标签和贡献者