Start · Sprachen · JavaScript · Referenz · HTMLGeolocationElement.watch

HTMLGeolocationElement.watch

Eigenschaft

Liest oder setzt einen booleschen Wert, der festlegt, ob das <code>&lt;geolocation&gt;</code>-Element den Standort fortlaufend aktualisiert statt nur einmal abzufragen.

seit JavaScript Experimentell: Chromium (Origin Trial / hinter Fla Kategorie: webapi

Signatur

HTMLGeolocationElement.watch

Beschreibung

Die Eigenschaft watch des Interfaces HTMLGeolocationElement spiegelt das gleichnamige boolesche HTML-Attribut watch des <geolocation>-Elements wider. Ist sie true, liefert der Browser nach der Freigabe durch den Benutzer bei jeder Standortänderung neue Daten, ähnlich wie navigator.geolocation.watchPosition(). Ist sie false (Standard), wird der Standort nur einmal ermittelt, vergleichbar mit getCurrentPosition().

Jede neue Position steht in der Eigenschaft position (ein GeolocationPosition) des Elements zur Verfügung. Zusätzlich wird ein location-Ereignis ausgelöst, das du mit addEventListener("location", …) oder über die Eigenschaft onlocation abfangen kannst. Fehler landen in der Eigenschaft error (GeolocationPositionError).

Setze watch, wenn deine Anwendung den Standort durchgehend braucht, etwa für Navigation, Live-Tracking beim Sport oder eine Karte, die dem Benutzer folgt. Für eine einmalige Aufgabe wie „Filialen in meiner Nähe“ lässt du das Attribut weg. Das spart Akku und ist datenschutzfreundlicher.

Das Element ist ein vom Browser gestaltetes, vertrauenswürdiges Bedienelement für Berechtigungen. Der Benutzer muss es selbst anklicken, erst danach werden Standortdaten übermittelt. watch legt also nur fest, wie die Daten nach der Freigabe geliefert werden. Die Berechtigungsabfrage selbst löst die Eigenschaft nicht aus.

Parameter

Name Typ Default Beschreibung
$value boolean false Beim Setzen: true fügt das Attribut watch hinzu (fortlaufende Aktualisierung), false entfernt es (einmalige Abfrage).

Beispiele

Live-Tracking per HTML-Attribut und location-Ereignis

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

console.log(geo.watch); // Attribut ist gesetzt

geo.addEventListener('location', () => {
  if (geo.position) {
    const { latitude, longitude, accuracy } = geo.position.coords;
    console.log(`Position: ${latitude.toFixed(5)}, ${longitude.toFixed(5)} (±${Math.round(accuracy)} m)`);
  } else if (geo.error) {
    console.error('Standortfehler:', geo.error.message);
  }
});
true Position: 52.52001, 13.40495 (±15 m) Position: 52.52010, 13.40512 (±12 m)

Element per JavaScript erzeugen und watch umschalten

const geo = document.createElement('geolocation');
geo.watch = true; // entspricht setAttribute('watch', '')
document.body.append(geo);

console.log(geo.hasAttribute('watch'));

// Tracking-Schalter in der Oberfläche
const toggle = document.querySelector('#tracking-toggle');
toggle.addEventListener('change', () => {
  geo.watch = toggle.checked;
  console.log('Fortlaufende Aktualisierung:', geo.watch);
});
true Fortlaufende Aktualisierung: false

Funktionsprüfung mit Rückfall auf die Geolocation-API

const startTracking = (onPosition) => {
  if ('HTMLGeolocationElement' in window) {
    const geo = document.createElement('geolocation');
    geo.watch = true;
    geo.onlocation = () => geo.position && onPosition(geo.position);
    document.querySelector('#geo-slot').append(geo);
    return () => geo.remove();
  }
  // Rückfall: klassische API
  const id = navigator.geolocation.watchPosition(onPosition, console.error);
  return () => navigator.geolocation.clearWatch(id);
};

const stop = startTracking((pos) => console.log(pos.coords.latitude, pos.coords.longitude));
// später: stop();
52.52001 13.40495

// Wichtig · Fallstricke

  • Experimentell: HTMLGeolocationElement bzw. <geolocation> gibt es bisher nur in Chromium-Browsern, als Origin Trial oder hinter einem Flag. Firefox und Safari unterstützen das Element nicht. Prüfe deshalb immer mit 'HTMLGeolocationElement' in window und sieh einen Rückfall auf navigator.geolocation vor. Name und Verhalten der Eigenschaft können sich noch ändern.
  • watch fragt selbst keine Berechtigung ab. Standortdaten kommen erst, wenn der Benutzer das Element angeklickt und den Zugriff erlaubt hat.
  • Fortlaufendes Tracking kostet Akku. Setze watch auf false oder entferne das Element, sobald du keine Daten mehr brauchst. Im Hintergrund kann der Browser die Aktualisierungen drosseln.
  • Ob sich eine Änderung von watch auf eine bereits laufende Abfrage auswirkt, kann je nach Implementierung verschieden sein. Setze die Eigenschaft deshalb am besten, bevor der Benutzer das Element aktiviert.
  • Wie die klassische Geolocation-API funktioniert das Element nur in einem sicheren Kontext (HTTPS). In iframes muss die Berechtigungsrichtlinie geolocation erlaubt sein.
  • Datenschutz: Speichere oder übertrage fortlaufende Standortdaten nur mit klarer Einwilligung. Solche Daten sind personenbezogen (DSGVO).