2

serviceWorkerナビゲーター オブジェクトからプロパティを完全に削除する方法はありますか? (式('serviceWorker' in navigator)が偽になるように。)

delete動作しません:

delete navigator.serviceWorker;
'serviceWorker' in navigator; // true

に割り当ててundefinedも何もしません (それで十分だったとしても):

navigator.serviceWorker = null;
'serviceWorker' in navigator; // true
navigator.serviceWorker === null; // false

Object.definePropertyも機能しません:

Object.defineProperty(navigator, "serviceWorker", { 
  configurable: true,
  value: undefined
});
'serviceWorker' in navigator; // true
navigator.serviceWorker === undefined; // true

(これを行う理由は、テストなどのために、新しいブラウザーを古いブラウザーのように動作させるためです。)

4

2 に答える 2

3

テストのために新しいブラウザを古いブラウザのように動作させたい場合は、新しい関数を定義して使用できます。

function areServiceWorkersSupported() {
  return 'serviceWorker' in navigator;
}

そして、テスト中に関数を上書きできます。

于 2016-03-09T12:37:47.710 に答える
0

navigator.serviceWorkerは読み取り専用のプロパティであるため、変更できません このリンクを確認してください

于 2016-03-09T12:25:07.653 に答える