从服务工作者获取页面URL参数

时间:2017-10-18 04:31:33

标签: javascript url service-worker url-parameters url-parsing

如何使用服务工作者的参数获取页面URL?

我尝试了self.registration.scope,但不包括参数。

2 个答案:

答案 0 :(得分:6)

我不清楚您是否询问有关获取服务工作者脚本的URL,或者在服务工作者下打开的所有客户端页面的URL'范围。所以...这里有两个方法:

// Get a URL object for the service worker script's location.
const swScriptUrl = new URL(self.location);

// Get URL objects for each client's location.
self.clients.matchAll({includeUncontrolled: true}).then(clients => {
  for (const client of clients) {
    const clientUrl = new URL(client.url);
  }
});

在其中任何一种情况下,如果您有URL个对象,如果您对查询参数感兴趣,可以使用其searchParams property

if (url.searchParams.get('key') === 'value') {
  // Do something if the URL contains key=value as a query parameter.
}

答案 1 :(得分:0)

您可以获取waiting.scriptURLactive.scriptURL,将结果传递给URL()构造函数,获取对象的.search属性

  navigator.serviceWorker.register("sw.js?abc=123")
  .then(function(reg) {
    const scriptURL = reg.waiting && reg.waiting.scriptURL || reg.active.scriptURL;
    const url =  new URL(scriptURL);
    const queryString = url.search;
    console.log(queryString);
  }).catch(function(err) {
    console.log("err", err);
  });