我使用以下代码注册服务工作者:
echo(json_encode($json_Array, JSON_UNESCAPED_SLASHES ));
我看到我的资源显示在应用缓存中。然后,我转到Chrome中的 // If the browser supports serviceWorker, and we haven't registered any - we'll register our: sw.js ..
if ('serviceWorker' in navigator && !navigator.serviceWorker.controller) {
navigator.serviceWorker.register('/sw.js').then(function(registrationObj) {
console.log('Registration object: ', registrationObj);
}).catch(function(error) {
// serviceWorker registration failed ..
console.log('Registration failed with ' + error);
});
} else {
console.log('Service worker already registered. Skip registration.')
};
标签,选择Application
,点击Service Workers
并刷新页面。
该页面打开正常,但我在浏览器控制台中得到了这个:
http://www.screencast.com/t/1uodUTHM5ig
这在Service Worker调试器中:
答案 0 :(得分:1)
可能是因为你没有缓存中的服务工作者(非常自然。它不应该首先被缓存。)所以它回退到标准的http fetch进程,并且当应用程序脱机时它会失败。 / p>
该错误不会阻碍任何事情,也不会影响您的应用的工作方式。它只是告诉你它无法获取脚本。当应用程序离线时,并不是想成功。
您的服务工作者脚本可能是这样构建的;
event.respondWith(
caches.match(event.request).then(function (response) {
if (response) {
return response;
}
// request for service worker .js file falls here as it is not in the cache
// this fails of course since the app is offline
return fetch(event.request).then(function (response) {
return response;
});
})
);