- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以在 Android Chrome、macOS Chrome 以及 Safari 和 Windows Chrome 上使用 service Worker 下载网站以供离线使用。当我尝试将网站下载到 时iOS 12.1 Safari 它首先起作用。但是当我关闭 Safari,离线并重新打开 Safari 时,我得到以下信息 错误信息 :
Safari can't open the Site.
Error: "FetchEvent.respondWith received an error: TypeError: Thereseems to be no connection to the Internet."
==== AND in the console ====
FetchEvent.respondWith received an error: Returned response is null
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Offline App</h1>
</body>
<script>
if('serviceWorker' in navigator) {
navigator.serviceWorker.register('sw.js').then(function (registration) {
console.log('Service Worker Registered');
});
}
</script>
</html>
sw.js
/*
Copyright 2014 Google Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
importScripts('cache-polyfill.js');
var CACHE_VERSION = 1;
var CURRENT_CACHES = {
prefetch: 'prefetch-cache-v' + CACHE_VERSION
};
self.addEventListener('install', function(event) {
var now = Date.now();
var urlsToPrefetch = [
'/pwa/index.html'
];
console.log('Handling install event. Resources to prefetch:', urlsToPrefetch);
event.waitUntil(
caches.open(CURRENT_CACHES.prefetch).then(function(cache) {
var cachePromises = urlsToPrefetch.map(function(urlToPrefetch) {
var url = new URL(urlToPrefetch, location.href);
url.search += (url.search ? '&' : '?') + 'cache-bust=' + now;
var request = new Request(url, {mode: 'no-cors'});
return fetch(request).then(function(response) {
if (response.status >= 400) {
throw new Error('request for ' + urlToPrefetch +
' failed with status ' + response.statusText);
}
return cache.put(urlToPrefetch, response);
}).catch(function(error) {
console.error('Not caching ' + urlToPrefetch + ' due to ' + error);
});
});
return Promise.all(cachePromises).then(function() {
console.log('Pre-fetching complete.');
});
}).catch(function(error) {
console.error('Pre-fetching failed:', error);
})
);
});
self.addEventListener('activate', function(event) {
var expectedCacheNames = Object.keys(CURRENT_CACHES).map(function(key) {
return CURRENT_CACHES[key];
});
event.waitUntil(
caches.keys().then(function(cacheNames) {
return Promise.all(
cacheNames.map(function(cacheName) {
if (expectedCacheNames.indexOf(cacheName) === -1) {
console.log('Deleting out of date cache:', cacheName);
return caches.delete(cacheName);
}
})
);
})
);
});
self.addEventListener('fetch', function(event) {
if (!navigator.onLine) {
event.respondWith(
caches.match(event.request).then(function (response) {
if (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;
});
})
);
}
});
最佳答案
清除 Web 缓存后,它对我来说工作正常......
关于ios - Service Worker FechtEvent.respondWith 响应在 iOS 12.1 Safari 上为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53431195/
在未指定respondWith 的情况下从 Service Worker 中的 fetch 事件处理程序返回是否有效?在那种情况下会发生什么? fetch 事件是否仍以默认方式正确处理? self.a
是否有必要在 respondWith(本身在 fetch 事件中)中使用 waitUntil? respondWith 是否已经waitUntil 收到已解决的 promise ? 对此的一些讨论是
在服务 worker 中,我的获取处理程序如下所示: self.addEventListener('fetch', function (event) { event.respondWith(
我的 serviceworker 有这样的逻辑,当一个获取事件发生时,首先它获取一个包含一些 bool 值(不是 event.request.url)的端点并根据我调用的值检查该值 事件.respon
我正在使用 Jasmine 2.0.4 和 jasmine-ajax 2.99.0 来尝试测试调用 Web 服务的模块。代码如下: define(['models/data-service',
当使用 jasmine-ajax 库测试 JavaScript 代码时,我可以模拟 ajax 响应。特别是,我可以定义将给予特定 ajax 请求的响应。似乎有(至少)两种不同的方法可以做到这一点: 方
服务 worker “获取”不返回响应对象 我正在尝试使用缓存的内容来回答请求。如果缓存没有所需的内容,我将从服务器获取,将响应放入缓存并返回它。 self.addEventListener('fet
我可以在 Android Chrome、macOS Chrome 以及 Safari 和 Windows Chrome 上使用 service Worker 下载网站以供离线使用。当我尝试将网站下载到
如果用户尝试在离线状态下打开未缓存的页面,我的服务工作线程应运行以下方法 unableToResolve(),但页面会显示: Unable to connect Firefox can’t estab
有时当我运行我的服务器时,控制台会给我一个错误: Failed to load ‘http://localhost:3000/browser-sync/socket.io/?EIO=3&transpo
我是一名优秀的程序员,十分优秀!