如何获取在ServiceWorker范围内注册ServiceWorker的页面的URL?
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);
});
console.log(self.location.pathname); // /sw.js
// How can I get the `/user` URI?
答案 0 :(得分:14)
在服务工作者中,self.registration.scope
将为您提供相关的范围。这在Chrome 42+中可用(刚刚成为稳定版本),因此使用起来应该是安全的。
我想你也可能会问如何获得对服务工作者控制的所有活动页面的引用?如果是这种情况,答案是使用self.clients.matchAll()
(也可在Chrome 42+中使用),它将返回WindowClient
个对象(可能为空),对应于每个打开的受控页面。 WindowClient
使用相应的网址公开url
媒体资源。