2014-05-20 62 views
3


https://developer.mozilla.org/en-US/docs/Web/API/NotificationChrome不关闭通知

这就像一个魅力。

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秒。

这也可以在使用Notification.close()方法中的Web应用程序级别进行,例如用下面的代码:

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

虽然该代码不工作。控制台中有一个错误,表示通知没有close方法或类似的东西。

回答

12

嗯,事实上我错了,代码

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

工作在两个Firefox和Chrome。 (我猜也是Safari)

+0

仍然好奇为什么广告方式('.onshow')不起作用。 –

+0

也许文档不是最新的,或者我使用的是不同的版本。实际上不记得^^“ – Depado