简体   繁体   English

服务工作者事件侦听器 - 获取

[英]Service workers event listener - fetch

I'd created a service worker by next code:我通过下一个代码创建了一个服务工作者:

 if ('serviceWorker' in navigator) { window.addEventListener('load', function() { navigator.serviceWorker.register('/sw.js').then(function(registration) { console.log('ServiceWorker registration successful with scope: ', registration.scope); }).catch(function(err) { console.log('ServiceWorker registration failed: ', err); }); }); }

and get fine answer, and event 'install' emit in sw.js ok, but event 'fetch' never emit.并得到很好的答案,并且事件 'install' 在 sw.js 中发出,但事件 'fetch' 永远不会发出。

I use http-server (node js) with 80 (http) port, i've seen my request in DevTools Chrome and in console from http-server, but my service worker hadn't emitted any.我使用带有 80 (http) 端口的 http-server(节点 js),我在 DevTools Chrome 和来自 http-server 的控制台中看到了我的请求,但我的 service worker 没有发出任何请求。

My service worker code:我的服务人员代码:

 self.addEventListener('install', () => { console.log("event - install"); // OK }); self.addEventListener("fetch", (e) => { console.log("A"); // BAD return e.request; });

I use this code in the end of body我在正文的末尾使用此代码

 setTimeout(() => { alert("S"); fetch("/svg.svg", { method: "GET" }); }, 10000);

serviceworker 必须以 https 协议运行,但 http-server 创建一个 http 服务器

Ok, i decide my problem.好的,我决定我的问题。 I forgot to remove option 'Disable cache' in DevTools (in 'Network' tab) Chrome, i'd worked with this option yesterday.我忘记删除 DevTools(在“网络”选项卡中)Chrome 中的“禁用缓存”选项,我昨天使用了这个选项。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM