ServiceWorker范围中的页面URL

时间:2015-04-16 10:37:24

标签: javascript url service-worker

如何获取在ServiceWorker范围内注册ServiceWorker的页面的URL?

main.js

console.log(window.location.pathname); // /user
navigator.serviceWorker.register('/app/sw.js',{scope : '/user'}).then(function(){
    console.log('Service Worker initialised');
}).catch(function(er){
    console.log('er.message);
});

sw.js

console.log(self.location.pathname); // /sw.js
// How can I get the `/user` URI?

1 个答案:

答案 0 :(得分:14)

在服务工作者中,self.registration.scope将为您提供相关的范围。这在Chrome 42+中可用(刚刚成为稳定版本),因此使用起来应该是安全的。

你也可能会问如何获得对服务工作者控制的所有活动页面的引用?如果是这种情况,答案是使用self.clients.matchAll()(也可在Chrome 42+中使用),它将返回WindowClient个对象(可能为空),对应于每个打开的受控页面。 WindowClient使用相应的网址公开url媒体资源。