Permissions: query() Methode
Baseline 2022
Newly available
Since September 2022, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Die query()
Methode des Permissions
Interface gibt den Status einer Benutzerberechtigung im globalen Scope zurück.
Die Namen der Benutzerberechtigungen sind in den jeweiligen Spezifikationen für jede Funktion definiert. Die von verschiedenen Browserversionen unterstützten Berechtigungen sind in den Kompatibilitätsdaten des Permissions
Interface aufgeführt (siehe auch den entsprechenden Quellcode für Firefox Werte, Chromium Werte und WebKit Werte).
Die APIs, die durch jede Berechtigung gesteuert werden, sind in Berechtigungsbewusste APIs im Überblicksthema der Permissions API aufgelistet.
Syntax
query(permissionDescriptor)
Parameter
permissionDescriptor
-
Ein Objekt, das Optionen für die
query
-Operation festlegt. Die verfügbaren Optionen für diesen Deskriptor hängen vom Berechtigungstyp ab.Alle Berechtigungen haben einen Namen:
name
-
Ein String, der den Namen der API enthält, deren Berechtigungen Sie abfragen möchten, wie
camera
,bluetooth
,microphone
,geolocation
(sehen Sie sichPermissions
für eine vollständigere Liste an). Das zurückgegebenePromise
wird mit einemTypeError
abgelehnt, wenn der Berechtigungsname vom Browser nicht unterstützt wird.
Für die
push
-Berechtigungen können Sie auch Folgendes angeben:userVisibleOnly
Optional-
(Nur Push, nicht unterstützt in Firefox — siehe den Abschnitt zur Browser-Unterstützung unten) Gibt an, ob Sie eine Benachrichtigung für jede Nachricht anzeigen oder stille Push-Benachrichtigungen senden möchten. Der Standardwert ist
false
.
Für die
midi
-Berechtigung können Sie auch Folgendes angeben:sysex
Optional-
Gibt an, ob Sie System-exklusive Nachrichten benötigen und/oder empfangen. Der Standardwert ist
false
.
Rückgabewert
Ein Promise
, das zu einem PermissionStatus
Objekt aufgelöst wird.
Ausnahmen
InvalidStateError
DOMException
-
Wird ausgelöst, wenn die
query()
Methode im Browserkontext aufgerufen wird und das damit verbundene Dokument nicht vollständig aktiv ist. TypeError
-
Wird ausgelöst, wenn das Abrufen der
PermissionDescriptor
Informationen auf irgendeine Weise fehlschlägt oder die Berechtigung nicht existiert oder von der Benutzeragent nicht unterstützt wird.
Beispiele
Nachrichten basierend auf Geolokalisierungsberechtigung anzeigen
Dieses Beispiel zeigt, wie Sie möglicherweise Nachrichten anzeigen, die sich auf den aktuellen Standort beziehen, wenn die geolocation
-Berechtigung gewährt wird, und andernfalls den Benutzer auffordern, die Erteilung des Zugriffs auf den Standort zu ermöglichen.
navigator.permissions.query({ name: "geolocation" }).then((result) => {
if (result.state === "granted") {
showLocalNewsWithGeolocation();
} else if (result.state === "prompt") {
showButtonToEnableLocalNews();
}
// Don't do anything if the permission was denied.
});
Unterstützung für verschiedene Berechtigungen testen
Dieses Beispiel zeigt das Ergebnis der Abfrage jeder der Berechtigungen.
Der Code verwendet navigator.permissions.query()
, um jede Berechtigung abzufragen und protokolliert entweder den Berechtigungsstatus oder die Tatsache, dass die Berechtigung im Browser nicht unterstützt wird. Beachten Sie, dass der query()
Aufruf innerhalb eines try...catch
Blocks gemacht wird, da das zugehörige Promise
abgelehnt wird, wenn die Berechtigung nicht unterstützt wird.
// Array of permissions
const permissions = [
"accelerometer",
"accessibility-events",
"ambient-light-sensor",
"background-sync",
"camera",
"clipboard-read",
"clipboard-write",
"geolocation",
"gyroscope",
"local-fonts",
"magnetometer",
"microphone",
"midi",
"notifications",
"payment-handler",
"persistent-storage",
"push",
"screen-wake-lock",
"storage-access",
"top-level-storage-access",
"window-management",
];
processPermissions();
// Iterate through the permissions and log the result
async function processPermissions() {
for (const permission of permissions) {
const result = await getPermission(permission);
log(result);
}
}
// Query a single permission in a try...catch block and return result
async function getPermission(permission) {
try {
const result = await navigator.permissions.query({ name: permission });
return `${permission}: ${result.state}`;
} catch (error) {
return `${permission} (not supported)`;
}
}
Das Protokoll der Codeausführung wird unten gezeigt:
Spezifikationen
Specification |
---|
Permissions # dom-permissions-query |
Browser-Kompatibilität
BCD tables only load in the browser