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

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

有没有办法从导航器对象中完全删除 serviceWorker 属性? (因此表达式 ('serviceWorker' in navigator) 为 false。)

删除不起作用:

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/

相关文章:

service-worker - 识别 FetchEvent 请求的来源/来源

javascript - ReactJS PWA 和 Firebase - Service Worker 在 IOS 中注册失败

javascript - 清除除某些之外的所有 html 控件

javascript - 在 Javascript 正则表达式中不匹配 )

javascript - 单击按钮以显示索引警报

javascript - 如何使用 JavaScript 检测 Chromium 操作系统?

java - Vaadin View - 导航器无法解析

javascript - 使用 navigator.platform 检测浏览器中的操作系统

javascript - 单击时,Youtube/SoundCloud视频在新选项卡中打开

google-chrome - 是否可以设置 Chrome 显示的通知样式?