【问题标题】:Resetting denied HTML notifications重置被拒绝的 HTML 通知
【发布时间】:2015-09-16 23:38:11
【问题描述】:

我有一个使用 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 情况。

【问题讨论】:

  • 我不是 100% 但这不是设计使然,否则您可能会不断向请求访问的用户发送垃圾邮件?
  • 完全同意@djsmiley2k。您可能正在尝试制作广告软件之类的东西。
  • @Vibhor Dube :- 我的应用程序有一个启用通知的按钮。 (如果用户由于某种原因早些时候阻止了它,现在想使用我的应用程序解除阻止〜我想给他一个选项)以避免任何不一致。不过谢谢!
  • 使用此链接查看我发布的答案:enter link description here
  • 点击此链接查看答案:enter link description here

标签: javascript html google-chrome web-notifications


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    例如:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 2023-03-21
      • 2018-07-25
      • 2010-11-29
      • 1970-01-01
      相关资源
      最近更新 更多