Start · Sprachen · JavaScript · Referenz · HTMLGeolocationElement.autolocate

HTMLGeolocationElement.autolocate

Eigenschaft

Liest oder setzt einen booleschen Wert, der festlegt, ob das <code>&lt;geolocation&gt;</code>-Element den Standort beim Rendern sofort abruft, wenn die Berechtigung bereits erteilt ist.

seit JavaScript Experimentell: Chromium (Origin Trial/Flag), noch Kategorie: webapi

Signatur

HTMLGeolocationElement.autolocate

Beschreibung

Die Eigenschaft autolocate des Interfaces HTMLGeolocationElement spiegelt das gleichnamige boolesche HTML-Attribut des <geolocation>-Elements wider. Ist sie true, fordert der Browser die Standortdaten direkt beim Rendern des Elements an. Die Nutzerin oder der Nutzer muss dafür also nicht erst auf die Schaltfläche klicken. Das gilt allerdings nur, wenn die Geolocation-Berechtigung für die Seite bereits erteilt wurde.

Gedacht ist das für wiederkehrende Besuche: Wer der Seite den Standortzugriff schon einmal erlaubt hat, bekommt z. B. sofort die Filialen in der Nähe oder das lokale Wetter angezeigt. Wurde die Berechtigung noch nicht erteilt oder abgelehnt, erscheint wegen autolocate keine Berechtigungsabfrage. Das Element verhält sich dann wie ohne das Attribut und wartet auf einen Klick.

Das Ergebnis kommt wie bei einem Klick auf das Element an: Es wird ein location-Ereignis ausgelöst, danach stehen die Daten in element.position bzw. ein Fehler in element.error. Wenn man die Eigenschaft setzt, wird das HTML-Attribut hinzugefügt (true) oder entfernt (false).

Beispiele

Element per JavaScript mit autolocate erzeugen

if ('HTMLGeolocationElement' in window) {
  const geo = document.createElement('geolocation');
  geo.autolocate = true; // setzt das HTML-Attribut

  geo.addEventListener('location', () => {
    if (geo.position) {
      const { latitude, longitude } = geo.position.coords;
      console.log(`Standort: ${latitude.toFixed(3)}, ${longitude.toFixed(3)}`);
    } else if (geo.error) {
      console.warn('Fehler:', geo.error.message);
    }
  });

  document.querySelector('#standort').append(geo);
  console.log(geo.hasAttribute('autolocate'));
}
true Standort: 52.520, 13.405 (nur bei bereits erteilter Berechtigung automatisch)

Vorhandenen Wert aus dem Markup lesen

// HTML: <geolocation id="geo" autolocate></geolocation>
const geo = document.querySelector('#geo');
console.log(geo.autolocate);

geo.autolocate = false;
console.log(geo.outerHTML);
true <geolocation id="geo"></geolocation>

autolocate nur für wiederkehrende Nutzer aktivieren (mit Fallback)

const container = document.querySelector('#filialsuche');

const zeigeFilialen = ({ latitude, longitude }) =>
  console.log(`Suche Filialen nahe ${latitude}, ${longitude} …`);

if ('HTMLGeolocationElement' in window) {
  const geo = document.createElement('geolocation');
  // Nur wenn die Berechtigung schon erteilt wurde, greift autolocate überhaupt
  geo.autolocate = localStorage.getItem('standortErlaubt') === '1';
  geo.addEventListener('location', () => {
    if (geo.position) {
      localStorage.setItem('standortErlaubt', '1');
      zeigeFilialen(geo.position.coords);
    }
  });
  container.append(geo);
} else {
  // Fallback: klassische Geolocation-API über eigenen Button
  const btn = Object.assign(document.createElement('button'), { textContent: 'Standort verwenden' });
  btn.addEventListener('click', () =>
    navigator.geolocation.getCurrentPosition((pos) => zeigeFilialen(pos.coords))
  );
  container.append(btn);
}
Suche Filialen nahe 48.137, 11.575 …

// Wichtig · Fallstricke

  • Experimentell: <geolocation> und HTMLGeolocationElement gibt es bisher nur in Chromium-basierten Browsern (Origin Trial bzw. Flag), in Firefox und Safari nicht. Prüfen Sie die Unterstützung immer vorher mit 'HTMLGeolocationElement' in window und bieten Sie navigator.geolocation als Fallback an. Name und Verhalten können sich noch ändern.
  • Keine automatische Berechtigungsabfrage: autolocate umgeht die Zustimmung der Nutzer nicht. Ist die Berechtigung noch nicht erteilt (prompt) oder abgelehnt (denied), passiert beim Rendern nichts. Dann ist ein Klick auf das Element nötig.
  • Timing: Registrieren Sie den location-Listener, bevor das Element in das DOM eingefügt wird. Sonst verpassen Sie möglicherweise das sofort ausgelöste Ereignis.
  • Kontinuierliche Abfrage: autolocate steuert nur die erste Abfrage beim Rendern. Fortlaufende Updates liefert das Attribut bzw. die Eigenschaft watch.
  • Nur in sicheren Kontexten (HTTPS) verfügbar. In iframes muss die Berechtigungsrichtlinie geolocation erlaubt sein.
  • Datenschutz: Ein automatischer Standortabruf kann Nutzer überraschen. Setzen Sie ihn nur ein, wenn der Standort für den Inhalt klar erkennbar gebraucht wird.