Start · Sprachen · JavaScript · Referenz · HTMLGeolocationElement.initialPermissionStatus

HTMLGeolocationElement.initialPermissionStatus

Eigenschaft

Liefert den Berechtigungsstatus für <code>geolocation</code> zum Zeitpunkt des ersten Ladens der Seite: <code>"granted"</code>, <code>"denied"</code> oder <code>"prompt"</code>.

seit JavaScript Experimentell: Chromium-basierte Browser (Origin T deprecated seit ja Kategorie: webapi

Signatur

HTMLGeolocationElement.initialPermissionStatus

Beschreibung

Die schreibgeschützte Eigenschaft initialPermissionStatus des Elements <geolocation> (HTMLGeolocationElement) gibt den Berechtigungsstatus der Standortfunktion zurück. Gemeint ist der Status, der beim ersten Laden der Seite galt. Der Wert entspricht dem Aufzählungstyp PermissionState und ist einer von "granted", "denied" oder "prompt".

Der Wert bleibt über die gesamte Lebensdauer der Seite gleich, auch wenn der Nutzer die Berechtigung später erteilt oder entzieht. Den aktuellen Stand liefert die Eigenschaft permissionStatus. Vergleicht man beide Werte, erkennt man, ob sich die Berechtigung während des Besuchs geändert hat. Das hilft zum Beispiel bei Auswertungen („Wie viele Nutzer haben über das Element zugestimmt?“) oder beim Anpassen der Oberfläche.

Typische Anwendungsfälle:

  • Erklärtexte nur anzeigen, wenn beim Laden noch keine Entscheidung vorlag ("prompt").
  • Bei "granted" direkt Standortinhalte laden, statt das Element hervorzuheben.
  • Messen, wie oft das Element eine vorherige Ablehnung ("denied") in eine Zustimmung umgewandelt hat.

Rückgabewert

Typ
"granted" | "denied" | "prompt"
Beschreibung
Ein String aus dem Aufzählungstyp PermissionState, der den Berechtigungsstatus für geolocation beim ersten Laden der Seite angibt.

Beispiele

Anfangsstatus auslesen

// HTML: <geolocation id="geo"></geolocation>
const geo = document.getElementById('geo');

if ('initialPermissionStatus' in geo) {
  console.log(`Status beim Laden: ${geo.initialPermissionStatus}`);
} else {
  console.log('<geolocation> wird nicht unterstützt');
}
Status beim Laden: prompt

Oberfläche je nach Anfangsstatus anpassen

const geo = document.querySelector('geolocation');
const hint = document.querySelector('#geo-hint');

switch (geo.initialPermissionStatus) {
  case 'granted':
    hint.textContent = 'Dein Standort wird verwendet.';
    break;
  case 'denied':
    hint.textContent = 'Du hast den Standortzugriff abgelehnt. Klicke auf den Button, um ihn doch zu erlauben.';
    break;
  default: // 'prompt'
    hint.textContent = 'Klicke auf den Button, um Filialen in deiner Nähe zu finden.';
}

Änderung der Berechtigung während des Besuchs erkennen

const geo = document.querySelector('geolocation');

geo.addEventListener('promptdismiss', () => {
  console.log('Nutzer hat den Dialog geschlossen');
});

geo.addEventListener('location', () => {
  const vorher = geo.initialPermissionStatus;
  const jetzt = geo.permissionStatus;
  if (vorher !== 'granted' && jetzt === 'granted') {
    console.log(`Berechtigung geändert: ${vorher} → ${jetzt}`);
  }
  if (geo.position) {
    const { latitude, longitude } = geo.position.coords;
    console.log(latitude.toFixed(3), longitude.toFixed(3));
  }
});
Berechtigung geändert: prompt → granted 52.520 13.405

// Wichtig · Fallstricke

  • Experimentell: <geolocation> und HTMLGeolocationElement gibt es bislang nur in Chromium-basierten Browsern (Origin Trial bzw. hinter einem Flag). Firefox und Safari unterstützen das Element nicht. Prüfe die Unterstützung immer vorab, z. B. mit 'initialPermissionStatus' in element oder typeof HTMLGeolocationElement !== 'undefined'. Als Rückfallebene dient navigator.geolocation.
  • Der Wert ändert sich nicht. Wer auf Änderungen reagieren will, muss permissionStatus lesen oder navigator.permissions.query({ name: 'geolocation' }) mit dem Event change verwenden.
  • Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird im nicht-strikten Modus stillschweigend ignoriert und löst im strikten Modus einen TypeError aus.
  • Browser können aus Datenschutzgründen "prompt" melden, obwohl der Nutzer früher abgelehnt hat, etwa im privaten Modus oder bei zurückgesetzten Berechtigungen. Verlasse dich also nicht darauf, dass "prompt" immer „noch nie gefragt“ bedeutet.
  • Das Element funktioniert nur in einem sicheren Kontext (HTTPS). In iframes muss die Permissions Policy geolocation erlaubt sein.