Signatur
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'));
}
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);
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);
}
// Wichtig · Fallstricke
- Experimentell:
<geolocation>undHTMLGeolocationElementgibt 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 windowund bieten Sienavigator.geolocationals Fallback an. Name und Verhalten können sich noch ändern. - Keine automatische Berechtigungsabfrage:
autolocateumgeht 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:
autolocatesteuert nur die erste Abfrage beim Rendern. Fortlaufende Updates liefert das Attribut bzw. die Eigenschaftwatch. - Nur in sicheren Kontexten (HTTPS) verfügbar. In iframes muss die Berechtigungsrichtlinie
geolocationerlaubt sein. - Datenschutz: Ein automatischer Standortabruf kann Nutzer überraschen. Setzen Sie ihn nur ein, wenn der Standort für den Inhalt klar erkennbar gebraucht wird.