我有一个web应用程序,在其中我使用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
情况。
正如前面的评论所指出的,您看到的行为是经过设计的。如果您阅读了步骤2,请参阅https://notifications.spec.whatwg.org/#dom-notificationrequestpermission您将看到该规范要求,只有当权限值为default
时,才会询问用户是否可以接受显示通知。如果权限值是granted
或blocked
,则该算法要求不再询问用户显示通知是否可接受。
用户如果改变了对其屏蔽的网站的通知的想法,可以选择进入浏览器设置,自行重置该网站的权限。
我建议有一个按钮来打开通知,然后检查那里的权限,如果之前被拒绝,则返回。
例如:
if (Notification.permission === "denied") {
alert("Notifications blocked. Please enable them in your browser.");
}