Javascript 如何正确设置浏览器创建的桌面通知的关闭超时
我正在使用标准为我的web应用程序处理桌面通知。在我最初的开发中,我使用的是谷歌浏览器。使用Chrome,当页面创建Javascript 如何正确设置浏览器创建的桌面通知的关闭超时,javascript,google-chrome,settimeout,Javascript,Google Chrome,Settimeout,我正在使用标准为我的web应用程序处理桌面通知。在我最初的开发中,我使用的是谷歌浏览器。使用Chrome,当页面创建通知对象时,通知将永远留在桌面上 通知原型确实有一个.close()方法,该方法允许关闭以前调用过的通知。我认为,这与setTimeout函数结合使用,将使几秒钟后自动取消通知变得轻而易举。我甚至找到了我的主意 但是,我似乎无法使用setTimeout函数使通知的范围正常工作,并且没有为每个创建的通知正确调用.close()方法 以下是我尝试过的(我使用中的一些代码作为起点): 按
通知
对象时,通知将永远留在桌面上
通知
原型确实有一个.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>
//请求页面加载权限
document.addEventListener('DOMContentLoaded',函数(){
if(Notification.permission!=“已授予”)
Notification.requestPermission();
});
函数notifyMe(){
如果(!通知){
//警报('您的浏览器中没有桌面通知。请尝试使用Chromium');
返回;
}
if(Notification.permission!=“已授予”)
Notification.requestPermission();
否则{
风险值通知=新通知(“通知”);
notification.onclick=函数(){
window.focus();
};
setTimeout(notification.close,2000);
//结果:未捕获类型错误:非法调用
//也试过。。。。。
//setTimeout(notification.close(),2000);
//结果:通知将永远打开
//setTimeout('notification.close',2000);
//结果:ReferenceError:未定义通知
}
}
如果有这方面经验的人能帮助我,我将不胜感激。当我将其包装到
函数(){}
中时,它可以工作:
setTimeout(function() { notification.close() }, 2000);
看这把小提琴: