onfetch
特性为
ServiceWorkerGlobalScope
interface is an event handler fired whenever a
fetch
event occurs (usually when the
WindowOrWorkerGlobalScope.fetch()
method is called.)
serviceWorkerGlobalScope.onfetch = function(fetchEvent) { ... };
This code snippet is from the
service worker prefetch sample
(见
prefetch example live
.) The
ServiceWorkerGlobalScope.onfetch
event handler listens for the
fetch
event. When fired, the code returns a promise that resolves to the first matching request in the
缓存
object. If no match is found, the code fetches a response from the network.
The code also handles exceptions thrown from the
fetch()
operation. Note that an HTTP error response (e.g., 404) will not trigger an exception. It will return a normal response object that has the appropriate error code set.
self.addEventListener('fetch', function(event) {
console.log('Handling fetch event for', event.request.url);
event.respondWith(
caches.match(event.request).then(function(response) {
if (response) {
console.log('Found response in cache:', response);
return response;
}
console.log('No response found in cache. About to fetch from network...');
return fetch(event.request).then(function(response) {
console.log('Response from network is:', response);
return response;
}).catch(function(error) {
console.error('Fetching failed:', error);
throw error;
});
})
);
});
| 规范 | 状态 | 注释 |
|---|---|---|
|
服务工作者
The definition of 'Event Handlers' in that specification. |
工作草案 | 初始定义 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
onfetch
|
Chrome 40 | Edge ≤79 |
Firefox
44
注意事项
|
IE 不支持 No | Opera 24 | Safari 11.1 | WebView Android 40 | Chrome Android 40 | Firefox Android 44 | Opera Android 24 | Safari iOS 11.3 | Samsung Internet Android 4.0 |
完整支持
不支持
实验。期望将来行为有所改变。
见实现注意事项。
ServiceWorkerGlobalScope