2016-05-09 4 views
8

Ich bin eine Chat-Webapp zu schreiben, die in der Lage sein muss, Desktop-Push-Benachrichtigungen über die Benachrichtigungen API auslösen: https://developer.mozilla.org/en-US/docs/Web/API/Notifications_APIUneinheitliche/Verzögerte HTML5 Desktop-Push-Benachrichtigungen auf Chrome

Leider scheint es, dass die Meldungen nicht zeigen bis ich sie alle aus durch eine weitere Benachrichtigung mit dieser Geige flush: https://jsfiddle.net/yoshi6jp/Umc9A/

Dies ist der Code, den ich verwende:

function triggerDesktopNotification() { 
    function makeNotification() { 
    var notification = new Notification('AppName', { 
     body: 'You have a new message!', 
     icon: '/favicon.ico', 
    }); 
    notification.onclick =() => { 
     notification.close(); 
    }; 
    } 

    if (Notification.permission === 'granted') { 
    makeNotification(); 
    } 
    else if (Notification.permission !== 'denied') { 
    Notification.requestPermission(function (permission) { 
     if (permission === 'granted') { 
     makeNotification(); 
     } 
    }); 
    } 
} 

ich kann bestätigen, dass der Code ordnungsgemäß ausgeführt wird durch Platzierung console.log() sofort nach dem new Notification Anruf. Interessanterweise, wenn ich stattdessen eine alert() dort anbringe, erscheint die Benachrichtigung, wenn ich die Alarmbox sehe (nachdem ich in meine Registerkarte zurückgekehrt bin).

Antwort

0

Wenn ich dich richtig verstanden habe;

Alarm unterbricht Programm-Stack, wo es platziert ich denke.Warum versuchen Sie es async mit SetTimeout-Funktion so feuern?

setTimeout( function(){ 
     alert("asd"); 
    }) 

bearbeitet js Geige here

Verwandte Themen