如何从导航器对象中删除serviceWorker属性?

时间:2016-03-09 11:32:23

标签: javascript navigator service-worker progressive-web-apps

有没有办法从导航器对象中完全删除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

(这样做的原因是为了让新浏览器更像旧版浏览器进行测试等)。

2 个答案:

答案 0 :(得分:3)

如果您想让新浏览器像旧版浏览器一样进行测试,您可以定义并使用新功能:

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

然后,在测试期间,您可以覆盖该功能。

答案 1 :(得分:0)

navigator.serviceWorker是一个只读属性,因此不可更改 检查此link