如何设置浏览器创建的桌面通知的关闭超时时间?
How do I properly set a close timeout on desktop notifications created by the browser
我正在使用标准的通知API为我的web应用程序处理桌面通知。出于我最初开发的目的,我使用的是Google Chrome。在Chrome中,当页面创建Notification
对象时,通知将永远留在桌面上。
Notification
原型确实有一个.close()
方法,允许关闭先前调用的通知。我认为,结合setTimeout
功能,这将使在几秒钟后自动取消通知变得轻而易举。我甚至找到了一个向导来证实我的想法。
然而,似乎我无法使通知的范围与setTimeout
函数正常工作,并且.close()
方法不能为每个创建的通知正确调用。
这是我尝试过的(我使用了一些在另一个答案中找到的代码作为起点):
按钮:
<button onclick="notifyMe()">
Notify me!
</button>
JavaScript:
<script>
// request permission on page load
document.addEventListener('DOMContentLoaded', function () {
if (Notification.permission !== "granted")
Notification.requestPermission();
});
function notifyMe() {
if (!Notification) {
//alert('Desktop notifications not available in your browser. Try Chromium.');
return;
}
if (Notification.permission !== "granted")
Notification.requestPermission();
else {
var notification = new Notification('Notification');
notification.onclick = function () {
window.focus();
};
setTimeout(notification.close, 2000);
// Result: Uncaught TypeError: Illegal invocation
// also tried.....
// setTimeout(notification.close(), 2000);
// Result: notification stays open forever
// setTimeout('notification.close', 2000);
// Result: ReferenceError: notification is not defined
}
}
</script>
如果有经验的人能帮助我,我将不胜感激。
当我将其包装成function() {}
时,它可以工作:
setTimeout(function() { notification.close() }, 2000);
查看此提琴:https://jsfiddle.net/drnz12n8/2/
相关文章:
- 通知权限被拒绝(桌面推送通知).通知弹出窗口不会't以镀铬显示
- 如何使用 chrome 桌面通知向许多用户发送通知
- 仅当标签页处于非活动状态时,才会显示 Chrome 桌面通知
- 是否可以在桌面通知正文JavaScript中显示图标
- Facebook如何处理桌面通知的点击,即使我的Facebook标签已关闭
- 如何在固定时间间隔内实现 chrome 扩展弹出桌面通知
- Chrome 桌面通知无法取消
- 如何在 html5 桌面通知中添加简单链接
- Javascript 通知解决方案库:桌面、声音、弹出窗口、标题栏闪烁等
- 点击 Chrome 桌面通知即可专注于内容
- 将变量从 php 传递到 javascript 函数(桌面通知)
- 从网站调用Windows 10桌面通知
- 为什么此桌面通知代码在Chrome中不起作用
- Chrome扩展桌面通知隐藏问题
- 桌面通知,比如gmail
- 带有HTML标记的桌面通知(代码示例)
- FCM消息通知消息和数据消息(WEB桌面推送通知)
- Chrome以外浏览器的桌面通知api
- 如何设置浏览器创建的桌面通知的关闭超时时间?
- Stack Overflow桌面通知是如何工作的