【问题标题】:Service workers event listener - fetch服务工作者事件监听器 - 获取
【发布时间】:2020-06-27 12:46:08
【问题描述】:

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

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 中发出正常,但事件“获取”从不发出。

我使用带有 80 (http) 端口的 http-server (node js),我在 DevTools Chrome 和来自 http-server 的控制台中看到了我的请求,但我的 service worker 没有发出任何请求。

我的服务工作者代码:

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

【问题讨论】:

  • 每当您从客户端使用fetchXMLHttpRequest 时,都会触发fetch 事件。您在代码中的哪个位置执行此操作?
  • @EmielZuurbier 抱歉,我忘记添加了,我已经更新了我的问题

标签: javascript fetch service-worker


【解决方案1】:

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

【讨论】:

【解决方案2】:

好的,我决定我的问题。我忘记删除 DevTools(在“网络”选项卡中)Chrome 中的“禁用缓存”选项,我昨天使用了这个选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 2011-09-28
    • 2012-02-15
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多