URL-адреса страниц в области ServiceWorker
Как я могу получить URL-адрес страниц, которые регистрируют ServiceWorker в области ServiceWorker?
Главная.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);
});
Св.js
console.log(self.location.pathname); // /sw.js
// How can I get the `/user` URI?
1 ответ:
Внутри работника сферы услуг,
self.registration.scope
даст вам соответствующий объем. Это доступно в Chrome 42+ (который только что стал стабильным релизом), поэтому он должен быть безопасным в использовании.Я думаю, что вы также можете спросить о том, как получить ссылку a на все активные страницы, которые также контролирует работник службы? Если это так, то ответ заключается в использовании
self.clients.matchAll()
(также доступно в Chrome 42+), который вернет (потенциально пустой) массивWindowClient
объекты, соответствующие каждой открытой, контролируемой странице.WindowClient
предоставляет СВОЙСТВОurl
с соответствующим URL-адресом.