JavaScript ServiceWorker.scriptURL — адреса скрипта робітника
Властивість scriptURL повертає адресу файлу сервісного робітника.
Загальний опис
Вона важливіша, ніж здається, бо від розташування файлу залежить область дії робітника.
Робітник із /sw.js контролює весь сайт. Робітник із /js/sw.js — лише /js/ і нижче, і жодні налаштування цього не змінять без спеціального заголовка від сервера.
Саме тому файл робітника майже завжди кладуть у корінь. «Робітник чомусь не перехоплює запити» — це в дев'яти випадках із десяти саме ця помилка.
автор: NagarD
- Нотатка
-
Область дії робітника не може бути ширшою за теку, у якій лежить його файл. Це найчастіша причина «робітник зареєструвався, але нічого не робить».
автор: NagarD
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| scriptURL | 45+ | 44+ | 11.1+ | 32+ | 17+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| scriptURL | 45+ | yes | yes | 11.3+ |
Приклади
+ запропонувати свій приклад у пісочниці
Розташування файлу вирішує, що робітник контролює.
// top-level await працює лише в модулях — тут той самий код в async-функції
(async () => {
const registration = await navigator.serviceWorker.ready;
console.log(registration.active.scriptURL); // 'https://css.in.ua/sw.js'
console.log(registration.scope); // 'https://css.in.ua/'
// а якби файл лежав у /js/sw.js:
// scope був би 'https://css.in.ua/js/'
// і головна сторінка лишилась би без кешу
})();
Коментарі
Коментарів ще немає — будьте першим!