Service Worker FechtEvent.respondWith response is null on iOS 12.1 SafariIOS

Programmierung für iOS
Anonymous
 Service Worker FechtEvent.respondWith response is null on iOS 12.1 Safari

Post by Anonymous »

Ich kann die Website mit dem Dienst Worker auf Android Chrome, macOS Chrome sowie Safari und auf Windows Chrome zur Offline-Nutzung herunterladen. Wenn ich versuche, die Website auf iOS 12.1 Safari herunterzuladen, funktioniert es zuerst. Aber wenn ich Safari schließe, offline gehe und Safari erneut öffne, erhalte ich die folgende Fehlermeldung:

Safari kann die Site nicht öffnen.
Fehler: „FetchEvent.respondWith hat einen Fehler erhalten: TypeError: There
scheint keine Verbindung zum Internet zu geben.“
==== UND in der Konsole ====
FetchEvent.respondWith hat einen Fehler erhalten: Die zurückgegebene Antwort ist null

Unten sehen Sie die Skripte in Textform. Leider kann ich zu dem Problem kaum etwas berichten, da ich es nicht verstehe und auf einige sachkundige Leute hoffe :)
index.html

Code: Select all




Title


Offline App


if('serviceWorker' in navigator) {
navigator.serviceWorker.register('sw.js').then(function (registration) {
console.log('Service Worker Registered');
});
}


sw.js

Code: Select all

/*
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;
});
})
);
}
});

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post