有什么方法可以从导航器对象中完全删除serviceWorker属性吗? (因此表达式('serviceWorker' in navigator)为false。)

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


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

最佳答案

如果要使新浏览器的行为像旧版浏览器一样进行测试,则可以定义和使用新功能:

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


然后,在测试期间,您可以覆盖该函数。

关于javascript - 如何从导航器对象中删除serviceWorker属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35890425/

10-12 15:44