Viele der neuen JavaScript-APIs, wie Geolocation oder Notifications, erfordern besondere Berechtigungen, die der Nutzer einer Website einräumen muss. Jede API bringt dabei ihre eigenen Methoden mit, um Rechte abzufragen und einzuräumen. Aufgrund der Vielzahl dieser neuen Schnittstellen, die aufgrund besonderer Browserfunktionen die Zustimmung des Nutzers einholen müssen, ist es schwierig, einen Überblick über zugelassene und blockierte APIs zu bekommen. Mit der neuen Permissions-API hat man endlich die Berechtigungen aller APIs im Blick und kann den jeweiligen Status abfragen.
Zentrale Verwaltung aller Berechtigungen
Gerade wenn für eine JavaScript-Anwendungen erforderlich ist, dass mehrere APIs zugelassen sind, kann die neue Permissions-API hilfreich sein. Über die „query()“-Methode des neuen „permissions“-Objekts kann man einzelne APIs auf ihren Berechtigungsstatus prüfen.
navigator.permissions.query({ name: "geolocation" }).then(function(e) { console.log(e.status); });
Über die Methode „query()“ werden als Objektliteral verschiedene Optionen übergeben. In erster Linie wird der Name der API – im Beispiel „geolocation“ zur Standortbestimmung – angegeben. Je nach API stehen einem weitere Optionen zur Verfügung, die in die Prüfung mit einbezogen werden können.
Übersicht der zugelassenen und blockierten Berechtigungen für eine Domain
Über die Promises-Methode „then()“ wird der Status der Berechtigung zurückgegeben. Der Status kann „prompt“, „granted“ oder „denied“ sein. Hat man eine API bislang weder zugelassen noch abgelehnt, wird „prompt“ wiedergegeben. Wurde vom Browser bereits eine Berechtigungsanfrage gestellt und akzeptiert, wird „granted“ ausgegeben. Wurde eine solche Anfrage verweigert, wird „denied“ zurück gegeben.
Berechtigungsanfrage der Geolocation-API
Ein weiterer Vorteil der Permissions-API ist die Möglichkeit, einen Status abzufragen, ohne dass eine Berechtigungsanfrage im Browser eingeblendet wird. Für die Geolocation-API gibt es beispielsweise keine Möglichkeit, einfach nur den Berechtigungsstatus abzufragen.
Per Event auf Statusänderungen reagieren
Mit dem „change“-Event ist es zudem möglich, auf Veränderung des Status einer API zu reagieren. Wird beispielsweise die Berechtigung für eine API vom Nutzer wieder zurückgenommen, lässt sich das innerhalb eines Events unmittelbar feststellen.
navigator.permissions.query({ name: "geolocation" }).then(function(e) { e.addEventListener("change", function() { console.log("Status der Geolocation-API: ", this.status); }, false); });
Im Beispiel wird dem Rückgabewert „e“ per „addEventListener()“ das „change“-Event zugewiesen. Dieses löst die dort definierte Funktion immer dann aus, wenn sich dieser Rückgabewert ändert – zum Beispiel dann, wenn eine Berechtigung wieder zurückgenommen wird.
Unterstützte APIs und Browser
Derzeit werden die Geolocation-, Notifications-, Push- und Midi-APIs unterstützt. Der Chrome ab Version 43 ist derzeit der einzige Browser, der die Permissions-API unterstützt.
(dpe)
Wie hilfreich war dieser Beitrag?
Klicke auf die Sterne um zu bewerten!
Durchschnittliche Bewertung 0 / 5. Anzahl Bewertungen: 0