3

Chrome安定版46を使用しています。

私は非常に基本的なサイトを持っています。1 つの button.onclick それとfetch('a')1 つの<a>タグが開きますb。URLaと の両方bが存在しません。Service Worker でそれらをキャッチし、new Response().

取得するボタンをクリックするとa、Service Worker は関与せず、404 エラーが発生します。
しかし、へのリンクをクリックするbと、Service Worker がオンフェッチして応答を返します。

質問fetch('a'): Service Worker がリクエストの FetchEvent を取得しないのはなぜですか?

以下のファイルを参照してください

HTML

<html>
  <body>
    <p><button onclick="fetch('a');">fetch a</button></p>
    <p><a href="b">go to b</a></p>
    <script src="js.js" defer></script>
  </body>
</html>

js.js

navigator.serviceWorker.register('sw.js');

sw.js

self.onfetch = function(event) {
  var request = event.request;
  event.respondWith(
    caches.match(request).then(function(response) {
      return new Response('here is your onfetch response');
    })
  );
};
4

1 に答える 1