ルートディレクトリから/serviceworker.js
を削除した後、Chromeは引き続き、webrootから削除したサービスワーカーを実行します。ウェブサイトに再度ログインできるように、ウェブサイトとChromeからService Workerをアンインストールするにはどうすればよいですか?
私はこの問題をService Workのキャッシュメカニズムまで追跡しましたが、デバッグする時間があるまで今のところ削除したいだけです。私が使用しているログインスクリプトは、GoogleアカウントにログインするためにGoogleのサーバーにリダイレクトします。ただし、login.phpページから取得できるのはERR_FAILED
メッセージのみです。
次のようにプログラムでサービスワーカーを削除できます。
navigator.serviceWorker.getRegistrations().then(function(registrations) {
for(let registration of registrations) {
registration.unregister()
} })
ドキュメント: getRegistrations 、 登録解除
Chrome Devtoolsの[アプリケーション]タブでサービスワーカーを削除することもできます。
次のURLに移動することもできます:chrome:// serviceworker-internals /そしてそこからserviceworkerの登録を解除します。
これはChrome Developer ToolおよびProgrammaticicallyを使用して実行できます。
入力して、実行中のすべてのインスタンスまたはService Workerを検索します
chrome:// serviceworker-internals /
新しいタブで、登録を解除するサービスワーカーを選択します。
開発者ツール(F12)を開き、アプリケーションを選択します。それから
[ストレージのクリア]-> [Service Workerの登録解除]を選択します
または
サービスワーカーを選択->リロード時に更新を選択
プログラムで
if(window.navigator && navigator.serviceWorker) {
navigator.serviceWorker.getRegistrations()
.then(function(registrations) {
for(let registration of registrations) {
registration.unregister();
}
});
}
デバイスで getRegistrations と getRegistration の2つのAPIを検出する必要があります。サービスワーカーには、すべてのプラットフォームに固有のAPIセットはありません。たとえば、一部のブラウザにはnavigator.serviceWorker.getRegistration
のみがあり、navigator.serviceWorker.getRegistrations
はありません。したがって、両方を検討する必要があります。
既に正解が与えられていることに加えて、SWキャッシュも削除したい場合は、以下を使用できます。
if ('caches' in window) {
caches.keys()
.then(function(keyList) {
return Promise.all(keyList.map(function(key) {
return caches.delete(key);
}));
})
}
読むことができます 詳細はこちら (段落:「Service Workerの登録解除」)
または、ブラウザから[キャッシュストレージ]セクションにアクセスして、[サイトデータのクリア]ボタンをクリックします。