6

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

这是我第二次触发权限。

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案例。

4

2 回答 2

11

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

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

于 2015-08-07T02:19:16.113 回答
6

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

前任:

  if (Notification.permission === "denied") {
    alert("Notifications blocked. Please enable them in your browser.");
  }
于 2016-10-17T00:10:06.740 回答