Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何侦听web通知权限更改_Javascript_Web_Permissions_Notifications_Listener - Fatal编程技术网

Javascript 如何侦听web通知权限更改

Javascript 如何侦听web通知权限更改,javascript,web,permissions,notifications,listener,Javascript,Web,Permissions,Notifications,Listener,根据MDN的规范,我们可以检查web通知的当前用户权限 但是,有没有办法监听此权限更改?像这样的 .on(Notification.permission, 'changed', function(){ } 我相信现在回答有点晚了,但是。。。你可以用这个 var Notification = window.Notification || window.mozNotification || window.webkitNotification; var was_questioned = false

根据MDN的规范,我们可以检查web通知的当前用户权限

但是,有没有办法监听此权限更改?像这样的

.on(Notification.permission, 'changed', function(){ }

我相信现在回答有点晚了,但是。。。你可以用这个

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);
        };
    });
    }
});
你只是在抱怨

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);
    };
  });
}

几天前,我们对这个答案进行了投票,结果一切都很好,但由于某些原因,它现在在FF中不起作用了,事件并没有启动。控制台中没有任何内容。chrome正常。upd:不适用于本地,但适用于生产OOD此方法不起作用,如果用户连续几次关闭本机通知提示,浏览器会将权限更改为“拒绝”,但侦听器无法处理此问题。我想应该注意的是,这是在使用权限API,这是一个工作草案。@teran您可能需要在本地环境中使用ssl证书,因为它只在本地环境中工作。