Chrome不会关闭通知

Chrome doesn't close the notification

本文关键字:通知 Chrome      更新时间:2023-09-26

我目前正在使用这个实现来使用基于浏览器的通知:
https://developer.mozilla.org/en-US/docs/Web/API/Notification

真是妙不可言。

if ("Notification" in window) {
        if(Notification.permission === "granted") {
            if($('#notify-on-message').is(':checked')) {
                var notification = new Notification(username + ' : ' + data, {'icon': "/custom/favicon.gif"});
            }
            if ($('#notify-on-hl').is(':checked')) {
                var patt = new RegExp("(^|''W)"+selfusername+"(''W|$)");
                if(patt.test(data)) {
                    var notification = new Notification(username + ' highlighted you.', {'icon': "/custom/favicon.gif"});
                }
            }
        }
    }

我遇到的主要问题是,在基于chrome的浏览器上,通知在3秒延迟后不会自行关闭。
它试图在var notification = ...

之后添加这个
setTimeout(function() {
    notification.close();
}, 2000);

虽然这不会改变任何事情。通知仍然有效。
这是已知的问题吗?有没有一个简单的方法来修复这个我不想要的行为?

编辑1:根据本页:
https://developer.mozilla.org/en-US/docs/WebAPI/Using_Web_Notifications
这是一个已知的问题:

注意:Firefox和Safari会在几分钟后自动关闭通知,例如4秒。

这也可以在web应用程序级别使用Notification.close()方法完成,例如使用以下代码:

var n = new Notification("Hi!");
n.onshow = function () { 
    setTimeout(n.close, 5000); 
}

虽然这段代码不起作用。控制台中有一个错误说通知没有close方法或类似的东西

实际上我错了,代码

var message_notification = new Notification("Data");
setTimeout(function(){
    message_notification.close();
}, 3000); 

适用于Firefox和Chrome。(我猜Safari也一样)

为选项添加标签将在显示新选项之前关闭当前弹出窗口

                            var options = {
                                body: msg,
                                icon: "logo.png",
                                dir: "ltr",
                                tag: "group1"
                            };