gpt4 book ai didi

javascript - 如何正确设置浏览器创建的桌面通知的关闭超时

转载 作者:搜寻专家 更新时间:2023-11-01 04:56:44 25 4
gpt4 key购买 nike

我正在使用标准 Notification API 为我的 Web 应用程序处理桌面通知.出于最初开发的目的,我使用的是 Google Chrome。使用 Chrome,当页面创建一个 Notification 对象时,通知将永远保留在桌面上。

Notification 原型(prototype)确实有一个 .close() 方法,它允许关闭之前调用的通知。我认为,结合 setTimeout 函数,几秒钟后自动关闭通知会变得轻而易举。我什至找到了a guide confirming我的想法。

但是,我似乎无法使用setTimeout 函数获取通知的范围以正常工作,并且.close() 方法没有获取为每个创建的通知正确调用。

这是我尝试过的方法(我使用了在 another answer 中找到的一些代码作为起点):

按钮:

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

请参阅此 fiddle :https://jsfiddle.net/drnz12n8/2/

关于javascript - 如何正确设置浏览器创建的桌面通知的关闭超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31886513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com