我如何知道浏览器通知是否被 Windows 阻止

spl*_*tor 13 javascript windows settings notifications push-notification

我的网络应用程序发送浏览器通知,我知道如何检查通知的浏览器权限,以及如果未授予权限如何请求权限。但是,即使用户授予我的站点发送通知的权限,她仍可能无法收到通知,因为它们可能已被禁用(在 Windows 上全局禁用,或在当前浏览器中禁用)。

有没有办法让我检测到这一点并让用户知道除非她在Windows 设置中启用通知,否则不会显示通知?

Kev*_*our 4

没有办法啊!

没有办法做到这一点,JavaScript 无法直接访问 Windows 来检测设置或更改 Windows 设置。

我很确定它是为了保护用户的隐私而设计的。

唯一受 Windows 设置影响的浏览器是 Chromium 构建的浏览器。

如果您在 Windows 中关闭通知设置,Google Chrome 和 Microsoft Edge(又名Chromium浏览器)将无法发送通知,而基于不同引擎构建的其他浏览器(例如 Firefox)将能够发送通知。

这意味着 Google Chrome 和 Microsoft Edge 使用不同的方式发送通知:

谷歌浏览器:

谷歌浏览器

微软边缘:

微软边缘

而 Firefox 有完全不同的方式和 UI:

火狐浏览器

总结:

JavaScript 无法检测 Windows 设置中是否启用了通知设置。如果禁用通知设置,Firefox 等浏览器仍然可以发送通知。