The parameter passed into the
oninstall
handler, the
InstallEvent
interface represents an install action that is dispatched on the
ServiceWorkerGlobalScope
的
ServiceWorker
. As a child of
ExtendableEvent
, it ensures that functional events such as
FetchEvent
are not dispatched during installation.
This interface inherits from the
ExtendableEvent
接口。
<div id="interfaceDiagram" style="display: inline-block; position: relative; width: 100%; padding-bottom: 8.571428571428571%; vertical-align: middle; overflow: hidden;"><svg style="display: inline-block; position: absolute; top: 0; left: 0;" viewbox="-20 0 700 60" preserveAspectRatio="xMinYMin meet"><a xlink:href="../API/Event" target="_top"><rect x="1" y="1" width="75" height="50" fill="#fff" stroke="#D4DDE4" stroke-width="2px" /><text x="38.5" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">Event</text></a><polyline points="76,25 86,20 86,30 76,25" stroke="#D4DDE4" fill="none"/><line x1="86" y1="25" x2="116" y2="25" stroke="#D4DDE4"/><a xlink:href="../API/ExtendableEvent" target="_top"><rect x="116" y="1" width="150" height="50" fill="#fff" stroke="#D4DDE4" stroke-width="2px" /><text x="191" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">ExtendableEvent</text></a><polyline points="266,25 276,20 276,30 266,25" stroke="#D4DDE4" fill="none"/><line x1="276" y1="25" x2="306" y2="25" stroke="#D4DDE4"/><a xlink:href="../API/InstallEvent" target="_top"><rect x="306" y="1" width="120" height="50" fill="#F4F7F8" stroke="#D4DDE4" stroke-width="2px" /><text x="366" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">InstallEvent</text></a></svg></div>
a:hover text { fill: #0095DD; pointer-events: all;}
InstallEvent.InstallEvent()
InstallEvent
对象。
Inherits properties from its ancestor,
事件
.
InstallEvent.activeWorker
只读
ServiceWorker
that is currently controlling the page.
继承方法来自其父级
ExtendableEvent
.
This code snippet is from the
service worker prefetch sample
(见
prefetch running live
.) The code calls
ExtendableEvent.waitUntil()
in
ServiceWorkerGlobalScope.oninstall
and delays treating the
ServiceWorkerRegistration.installing
worker as installed until the passed promise resolves successfully. The promise resolves when all resources have been fetched and cached, or when any exception occurs.
The code snippet also shows a best practice for versioning caches used by the service worker. Although this example has only one cache, you can use this approach for multiple caches. The code maps a shorthand identifier for a cache to a specific, versioned cache name.
注意 : 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) {
return 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);
})
);
});
| 规范 | 状态 | 注释 |
|---|---|---|
| 服务工作者 | 工作草案 |
As of May 2015, the install event is an instance of
ExtendableEvent
rather than a child of it.
|
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
InstallEvent
|
Chrome 40 | Edge ≤79 |
Firefox
44
注意事项
|
IE 不支持 No | Opera 27 | Safari 不支持 No | WebView Android 40 | Chrome Android 40 | Firefox Android 44 | Opera Android 27 | Safari iOS 不支持 No | Samsung Internet Android 4.0 |
InstallEvent()
构造函数
|
Chrome 40 | Edge ≤79 |
Firefox
44
注意事项
|
IE 不支持 No | Opera 27 | Safari 不支持 No | WebView Android 40 | Chrome Android 40 | Firefox Android 44 | Opera Android 27 | Safari iOS 不支持 No | Samsung Internet Android 4.0 |
activeWorker
|
Chrome 40 | Edge ≤79 |
Firefox
44
注意事项
|
IE 不支持 No | Opera 27 | Safari 不支持 No | WebView Android 40 | Chrome Android 40 | Firefox Android 44 | Opera Android 27 | Safari iOS 不支持 No | Samsung Internet Android 4.0 |
完整支持
不支持
实验。期望将来行为有所改变。
见实现注意事项。
InstallEvent
缓存
CacheStorage
Client
Clients
ExtendableEvent
FetchEvent
Navigator.serviceWorker
NotificationEvent
PeriodicSyncEvent
PeriodicSyncManager
PeriodicSyncRegistration
ServiceWorker
ServiceWorkerContainer
ServiceWorkerGlobalScope
ServiceWorkerRegistration
SyncEvent
SyncManager
SyncRegistration
WindowClient