2014-05-20 101 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