服务人员事件监听器-获取

时间:2020-03-16 11:46:10

标签: javascript fetch service-worker

我已通过下一个代码创建了服务工作者:

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

得到很好的答案,并且在sw.js中发出事件'install'正常,但是事件'fetch'从不发出。

我使用具有80(http)端口的http-server(节点js),我已经在DevTools Chrome和控制台中看到了来自http-server的请求,但是我的服务人员没有发出任何请求。

我的服务人员代码:

self.addEventListener('install', () => {
    console.log("event - install"); // OK
});

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

我在正文末尾使用此代码

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

好的,我决定我的问题。我忘了在Chrome的DevTools(位于“网络”标签中)中删除选项“禁用缓存”,我昨天使用了此选项。