重置被拒绝的 HTML 条通知

Resetting denied HTML notifications

我有一个使用 HTML 通知的网络应用程序。如果用户第一次允许并开始使用它,它工作正常,但是如果用户第一次通过单击阻止按钮阻止通知,然后尝试通过某些用户手势再次请求许可,则浏览器不会触发(Allow/Block) 弹出窗口。

这是我第二次触发权限

if(Notification.permission == 'denied' || Notification.permission == 'default'){

        Notification.requestPermission(function (permission) {
    // If the user accepts, let's create a notification
            if (permission === "granted") {
                console.log("Regranted");
            }
        });
    }

它适用于 default 情况但不适用于 denied 情况。

正如之前的评论所指出的,您看到的行为是设计使然。如果你阅读第 2 步,在 https://notifications.spec.whatwg.org/#dom-notification-requestpermission 处的第 2 子步,你会看到规范要求只有在权限值为 default 时才会询问用户是否可以接受显示通知。如果权限值为 grantedblocked,则该算法要求不再询问用户是否可以接受显示通知。

如果用户对已阻止的网站的通知改变主意,可以选择进入浏览器设置并自行更改该网站的权限设置。

我建议有一个按钮来打开通知,然后检查那里的权限,如果之前被拒绝则回退。

例如:

  if (Notification.permission === "denied") {
    alert("Notifications blocked. Please enable them in your browser.");
  }