如何收听Web通知权限更改

Li *_*ing 3 javascript permissions notifications listener web

根据MDN 的Notification.permission规范,我们可以检查当前用户的Web通知权限。

但是,有什么方法可以监听此权限更改?像这样吗

.on(Notification.permission, 'changed', function(){ }
Run Code Online (Sandbox Code Playgroud)

小智 14

你只需要

if ('permissions' in navigator) {
  navigator.permissions.query({ name: 'notifications' }).then(function (notificationPerm) {
    notificationPerm.onchange = function () {
      console.log("User decided to change his seettings. New permission: " + notificationPerm.state);
    };
  });
}
Run Code Online (Sandbox Code Playgroud)

  • upd:不适用于本地,但适用于生产 oO (2认同)

suz*_*suz 6

我相信答案来得有点晚,但是...您可以使用它。

var Notification = window.Notification || window.mozNotification || window.webkitNotification;

var was_questioned = false;
if (Notification.permission == 'default') {
    was_questioned = true;
}

Notification.requestPermission(function (permission) {
    if (was_questioned) {
        console.log("User was asked. New permission is: " + permission);
    }
    if ('permissions' in navigator) {
    navigator.permissions.query({name:'notifications'}).then(function(notificationPerm) {
        notificationPerm.onchange = function() {
            console.log("User decided to change his seettings. New permission: " + notificationPerm.state);
        };
    });
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的答案,顺便说一句,它仍然有效。 (2认同)