Javascript 删除HTML5通知权限

Javascript 删除HTML5通知权限,javascript,html,html5-notifications,Javascript,Html,Html5 Notifications,通过运行以下命令,可以提示用户允许或拒绝来自浏览器的桌面通知: Notification.requestPermission(callback); 但是否可以通过代码删除该权限?我们希望用户可以选择切换通知。这可以通过JavaScript实现,还是需要将该选项保存到其他地方?不,您的脚本无法通过编程方式放弃显示通知的权限。除了requestPermission之外,没有任何与权限相关的功能。(当然,浏览器可能有一个选项菜单,允许用户撤销对域的权限,但这是一个浏览器级别的选项,而不是站点级别的选

通过运行以下命令,可以提示用户允许或拒绝来自浏览器的桌面通知:

Notification.requestPermission(callback);

但是否可以通过代码删除该权限?我们希望用户可以选择切换通知。这可以通过JavaScript实现,还是需要将该选项保存到其他地方?

不,您的脚本无法通过编程方式放弃显示通知的权限。除了
requestPermission
之外,没有任何与权限相关的功能。(当然,浏览器可能有一个选项菜单,允许用户撤销对域的权限,但这是一个浏览器级别的选项,而不是站点级别的选项。例如,在Chrome中,您可以通过单击地址栏左侧的图标来查看此选项菜单。)

如果不想显示通知,只需不要调用
新通知

您可以将所有呼叫包装到
新通知
内部条件:

if(notifications_allowed) {
    new Notification(...);
}
或者您可以重写
通知
构造函数以包含contidional,并根据需要调用原始
通知

(function() {
    var oldNofitication = Notification;
    Notification = function() {
        if(notifications_allowed) {
            oldNotification.apply(this, arguments);
        }
    }
})();

如果使用供应商前缀的构造函数或函数(例如,
webkitNotifications.createNotification
),则需要重写其中的每一个,并以您的选项变量为条件。

查看at和上的文档,似乎没有方法请求撤销权限。不过,您可以使用模拟自己版本的权限来支持缺少的功能。假设您有一个切换通知的复选框

<input type="checkbox" onChange="toggleNotificationPermissions(this);" />
您可以通过以下方式检索权限:

function getNotificationPermissions() {
    if (Notification.permissions === 'granted') {
        return localStorage.getItem('notification-permissions');
    } else {
        return Notification.permissions;
    }
}
要显示通知时,请检查您的权限:

if (getNotificationPermissions() === 'granted') {
    new Notification(/*...*/);
}

好吧,我想是这样的。然后我们会选择将它保存到其他地方。谢谢你的回答。太好了!看起来是个不错的解决方案。这太棒了!谢谢
if (getNotificationPermissions() === 'granted') {
    new Notification(/*...*/);
}