如何在触发函数时添加回调函数?

时间:2017-09-15 07:39:12

标签: javascript jquery notifications web-push

我想为此函数添加一个回调:"BLOCK"。问题是我不知道什么时候它(这个函数)会被触发,因此我认为我必须在点击或类似的东西上绑定浏览器通知权限框,以实现每次用户点击"X"(close)if (result === 'denied') { console.log('Permission wasn\'t granted. Allow a retry.'); return; } if (result === 'default') { console.log('The permission request was dismissed.'); return; } if (result === 'accepted') { console.log('The permission request was accepted.'); return; } Notification.requestPermission() javascript文件找出点击的按钮,并执行以下操作:

Permission

我的问题是我不知道它是如何绑定到如下所示的浏览器通知权限框↓

browser notification permission box

我不想调用权限提示,即{{1}}功能。我只想检测何时更改了{{1}}并对该结果做了一些事情。

3 个答案:

答案 0 :(得分:1)

您通常会在页面加载时请求权限。 使用jquery,您可以执行类似

的操作
jQuery(document).ready(function() {
if (!("Notification" in window)) {
    console.log("This browser does not support desktop notification");
} else if (Notification.permission !== 'denied') {
    Notification.requestPermission(function(permission) {
        if (!('permission' in Notification)) {
            Notification.permission = permission;
        }
    });
}
});

答案 1 :(得分:0)

soo,我不完全确定,如果我理解你的话,但我认为你不需要将你的东西绑定到通知权限框。

根据MDN,有两种方法可以做到这一点:使用promises

Notification.requestPermission().then(function(permission) { ... });

callback

Notification.requestPermission(callback);

我认为对于如何获取权限值的承诺更为明显,但如果您使用“正常”回调,则可以将代码包装到函数中并检查权限参数:

function doStuff(result){
  if (result === 'denied')
   {
     console.log('Permission wasn\'t granted. Allow a retry.');
     return;
    }
  if (result === 'default')
 {
    console.log('The permission request was dismissed.');
    return;
  }
 if (result === 'accepted')
{
   console.log('The permission request was accepted.');
   return;
 }
}

然后致电:

Notification.requestPermission(doStuff(permission));

然后可能将结果保存在全局var中(我不知道你想用它做什么,所以是的)

答案 2 :(得分:0)

我正在寻找相同的东西,我在这里找到了这个答案: How to listen for web notification permission change

我认为这就是您要寻找的。它对我有用。