12 votes

Comment vérifier si le service-travailleur existe dans une URL donnée ?

Puis-je distinguer les sites web externes qui ont un 'service-worker' ou non ?

Mon avis est que :

  1. récupère tous les fichiers js à partir de l'URL donnée
  2. recherche de la chaîne 'sw.js'.

(je ne sais pas non plus comment faire)

Les données données seraient les suivantes :

const sitesToCheck = {
    'www.site1.com',
    'www.site2.com',
    'www.site3.com',
}

26voto

T.J. Crowder Points 285826

Si vous voulez faire cela en code, vous ne pouvez le faire que dans la même origine que le ou les travailleurs que vous voulez vérifier. Au sein de la même origine, vous pouvez utiliser getRegistration(url) (qui vous donne une promesse qui se résoudra en undefined ou un ServiceWorkerRegistration objet pour l'URL), ou getRegistrations() (qui vous donne une promesse pour un tableau de ServiceWorkerRegistration objets ). Par exemple :

navigator.serviceWorker.getRegistrations().then(registrations => {
    console.log(registrations);
});

2voto

Nicolas Hoizey Points 87

Vous pouvez consulter Détecteur de travailleurs du service une extension Chrome qui détecte si un site web enregistre un Service Worker en lisant l'adresse IP de l'utilisateur. navigator.serviceWorker.controller propriété. Cela peut également fonctionner dans d'autres navigateurs prenant en charge les extensions Web mais il semble qu'il ne soit pas encore distribué en tant que tel.

Cependant, il nécessite que le script soit exécuté dans un navigateur, ce qui pourrait ne pas couvrir vos besoins. Vous pouvez essayer avec un script Chrome sans tête .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X