【问题标题】:How can I know if browser notifications are blocked by Windows我如何知道浏览器通知是否被 Windows 阻止
【发布时间】:2021-07-09 04:28:40
【问题描述】:

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

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

【问题讨论】:

  • 我认为这将是一个很大的安全问题,您是否能够从浏览器中检索操作系统的数据..

标签: javascript windows push-notification notifications settings


【解决方案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();
        }
    

    【讨论】:

    • 不,这都是浏览器内的信息。与操作系统权限无关。
    猜你喜欢
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 2011-09-06
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    相关资源
    最近更新 更多