如何更新service-worker.js中的动态URL

时间:2016-11-08 13:57:12

标签: javascript fetch service-worker

self.addEventListener('sync', function(event) {
    console.log('firing: sync');

    if (event.tag == 'image-fetch') {
        console.log('sync event fired');
        event.waitUntil(fetchurl());
    }
});

function fetchurl()
{
    console.log('firing: doSomeStuff()');

    /* fetch dynamic url */
    fetch('https://localhost/Service-Workers-BackgroundSync/server.php')
    .then(function(response) {
        return response;
    })
    .then(function(text) {
        console.log('Request successful', text);
    })
    .catch(function(error) {
        console.log('Request failed', error);
    });
}

如何在service-worker.js中获取动态网址?

我正在调用'sync'事件。我想要动态传递获取URL ...总是点击提交按钮我得到不同的URL,然后我想通过'sync'事件在获取方法中传递动态URL。

请指导我。

1 个答案:

答案 0 :(得分:1)

您可以使用IndexedDBlocalforage等包装器在客户端和服务工作者之间共享信息。因此,在您的服务工作者中,您可以通过这种方式读取数据:

importScripts('./lib/localforage.js');

function fetchurl()
{
  console.log('firing: doSomeStuff()');
  /* get dynamic url from IndexedDB using localForage */
  localforage.getItem('dynamicUrl')
  .then(function (url) {
    fetch(url)
      .then(function(response) {
        return response;
      })
      .then(function(text) {
        console.log('Request successful', text);
      })
      .catch(function(error) {
        console.log('Request failed', error);
      });
  }
}