如何为Notification.requestPermission()函数选择正确的回调
How can I chose the correct callback for Notification.requestPermission() function?
Notification.requestPermission((函数已从回调更改为基于promise的版本。您可以在Mozilla文档中看到这一点。
为当前浏览器选择正确版本的最佳做法是什么?我试过这样的东西:
function callback(value) {
// Do something
}
Notification.requestPermission(callback).then(callback);
如果有承诺,这是有效的。有时会触发两次回调。有没有任何方法可以预先检查,哪一个版本适合我需要的回调?
我自己找到了一个解决方案。我不知道,是否有更好的方法。
var promise;
var calledBack = false;
if(!Notification || Notification.permission === 'denied')
alert('Notification had been denied');
else if(Notification && Notification.permission !== 'granted') {
function callback(result) {
if(!calledBack) {
calledBack = true;
if(result === 'granted') {
// Do something
}
}
}
promise = Notification.requestPermission(callback);
if(promise && typeof promise.then === 'function')
promise.then(callback);
}
回调将检查是否已被调用。如果requestPermission返回函数为"then"的promise,则使用promise。
相关文章:
- 行上的Primefaces数据表选择javascript回调
- 正在读取<p: 选择一个菜单/>在onchange回调中
- 如何在点击链接后从用户取消对话框中获得回调以选择移动应用程序
- 在jqueryajax中使用回调来设置在下拉菜单中选择的选定文本
- 在呈现项目后,挖空选择绑定回调的选项
- 如何在选择列表文本更改时触发回调函数(在 onchange 事件触发之前)
- 选择.js在“onItemAdd”回调中获取更多数据
- 在 jquery 中具有类选择器回调
- Webkit 突变观察器回调在选择框属性更改时不触发
- 最新版本的jQuery UI选择菜单中的“格式”回调
- Jquery 可以选择添加回调
- jQuery 选择器回调函数中的全局 Javascript vars
- $(this)未在回调函数中选择元素
- 渲染完成后,选择指令回调
- JS闭包——依赖回调的多个日期选择器初始化/调用
- 尝试理解对选择选项进行排序的 .each() 回调
- jQuery - <选项> 标记 - 无法在<选项>“取消选择”或“聚焦”上触发回调
- 停止传播在全日历选择回调
- 绝妙的jQuery颜色选择器回调问题
- FB.如果选择“取消”,则登录不调用回调