2017-11-13 6 views
1

Die Notification.requestPermission() hat 3 mögliche Ergebnisse: granted, denied und default.Chrome behandelt 'default' resultieren aus Notification.requestPermission() als 'verweigert'

In Chrome erhalten Sie default, wenn der Benutzer den Berechtigungsdialog mit dem X schließt, anstatt explizit block zu sagen. Aber wenn Sie default als Ergebnis erhalten, rufen Sie an, erhalten Sie denied, was es unmöglich macht, in Zukunft erneut die Erlaubnis zu fragen.

Es dies von Entwurf? Gibt es eine Möglichkeit, Chrom diese beiden Ergebnisse anders zu behandeln? Firefox behandelt diese in der richtigen Weise (Sie können Berechtigungen fragen, bis der Benutzer explizit verweigert)

Antwort

1

ich diese verlassen werde nur für den Fall jemand nach einer Antwort suchen:

Wenn der Benutzer die Erlaubnis Dialog geschlossen hatte Zum dritten Mal wird Chrome die Berechtigung automatisch auf denied setzen (es zeigt eine automatically blocked Nachricht unten im Popup der Berechtigung aus der Navigationsleiste). Also die ersten drei Male, die der Benutzer den Dialog schließt, erhalten Sie default als Ergebnis, aber zum dritten Mal die Berechtigung wird auf denied festgelegt.

Die Art, wie ich bin mit dieser Logik arbeiten:

window.Notification.requestPermission().then((result) => { 
    if (result === 'denied') { 
    // the user has denied permission 
    return; 
    } 

    if (result === 'default') { 
    // the user has closed the dialog 
    if (window.Notification.permission === 'denied') { 
     // the browser has decided to automatically denied permission 
    } 
    return; 
    } 

    // the user has granted permission 
}); 
Verwandte Themen