我如何知道浏览器通知是不是被 Windows 阻止
Posted
技术标签:
【中文标题】我如何知道浏览器通知是不是被 Windows 阻止【英文标题】:How can I know if browser notifications are blocked by Windows我如何知道浏览器通知是否被 Windows 阻止 【发布时间】:2021-07-09 04:28:40 【问题描述】:我的网络应用程序发送浏览器通知,并且我知道如何检查通知的浏览器权限,以及如果未授予权限,如何请求权限。 但是,即使用户授予我的站点发送通知的权限,她可能仍然无法收到通知,因为它们是might be disabled(在 Windows 上全局,或在当前浏览器上)。
有没有办法让我检测到这一点并让用户知道除非她在 Windows 设置 中启用通知,否则不会显示通知?
【问题讨论】:
我认为这将是一个很大的安全问题,您是否能够从浏览器中检索操作系统的数据.. 【参考方案1】:没有办法!
没有办法做到这一点,javascript 无法直接访问 Windows 以检测设置或更改 Windows 设置。
我很确定它是为了保护用户隐私。
受 Windows 设置影响的唯一浏览器是 Chromium 构建的浏览器。
如果您在 Windows 中关闭通知设置,Google Chrome 和 Microsoft Edge(又名Chromium 浏览器)将无法发送通知,而其他浏览器(如基于不同引擎的 Firefox)将能够发送通知。
这意味着 Google Chrome 和 Microsoft Edge 使用不同的方式来处理通知:
谷歌浏览器:
微软边缘:
虽然 Firefox 有完全不同的方式和 UI:
总结:
JavaScript 无法检测 Windows 设置中是否启用了任何通知设置。如果通知设置被禁用,Firefox 等浏览器仍然可以发送通知。
【讨论】:
【参考方案2】:只有安全的网站,才有方法!你可以使用:
if (!("Notification" in window))
alert("No");
这会做什么,如果桌面通知被禁用,它会显示一个警告说“不”。
在其他一些不起作用的情况下,您可以使用
if (Notification.permission !== 'granted')
Notification.requestPermission();
【讨论】:
不,这都是浏览器内的信息。与操作系统权限无关。以上是关于我如何知道浏览器通知是不是被 Windows 阻止的主要内容,如果未能解决你的问题,请参考以下文章