web-dev-qa-db-ja.com

指定されたURLにservice-workerが存在するかどうかを確認するにはどうすればよいですか?

特定の外部Webサイトに「service-worker」があるかどうかを区別できますか?

私の最善の推測は:

  1. 指定されたURLからすべてのjsファイルを取得します
  2. 文字列「sw.js」を検索します

(これを行う方法もわかりません)

与えられたデータは次のようになります:

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

これをコードで実行する場合は、チェックするワーカーと同じオリジン内でのみ実行できます。同じオリジン内で、 getRegistration(url) を使用できます(これにより、undefinedまたは ServiceWorkerRegistration object URLの場合)、または getRegistrations() (これにより、 ServiceWorkerRegistrationオブジェクト の配列が約束されます)。例えば。:

navigator.serviceWorker.getRegistrations().then(registrations => {
    console.log(registrations);
});
18
T.J. Crowder

Service Worker Detector 、a Chrome拡張機能は、Webサイトがnavigator.serviceWorker.controllerプロパティを読み取ることでServiceWorkerを登録するかどうかを検出します。これも機能する可能性があります。 in Web拡張機能をサポートする他のブラウザ ですが、まだそのように配布されていないようです。

ただし、スクリプトをブラウザで実行する必要があるため、ニーズに対応できない場合があります。スクリプト可能な ヘッドレスChrome で試すことができます。

1
Nicolas Hoizey