<geolocation>: Das Geolocation-Element
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Das <geolocation> HTML-Element erstellt eine interaktive Steuerung, mit der der Benutzer seine Standortdaten mit der Seite teilen kann.
Es bietet:
- Eine intuitive, vom Browser definierte Benutzeroberfläche.
- Einen Prozess zur Verwaltung der notwendigen Berechtigungen für die
geolocation-Funktion. - API-Funktionen zum Zugriff auf Standortdaten und zur Reaktion auf empfangene Standortdaten sowie Berechtigungsänderungen.
Attribute
Dieses Element enthält die globalen Attribute.
autolocateExperimentell-
Ein boolesches Attribut, das, wenn es auf
truegesetzt ist, angibt, dass der Browser die Standortdaten sofort abrufen soll, wenn das<geolocation>-Element gerendert wird, vorausgesetzt, die Berechtigung wurde vorher erteilt. Wenn auffalsegesetzt, werden Standortdaten erst abgerufen, wenn der Benutzer die Steuerung aktiviert. Standardmäßig auffalse.Wenn die Berechtigung nicht vorher erteilt wurde, hat dieses Attribut keine Wirkung.
watchExperimentell-
Ein boolesches Attribut, das, wenn es auf
truegesetzt ist, angibt, dass der Browser Standortdaten abrufen soll, wann immer sich die Position des Geräts des Benutzers ändert. Wenn auffalsegesetzt, werden Standortdaten nur einmal abgerufen. Standardmäßig auffalse.
Beschreibung
Das <geolocation>-Element bietet eine deklarative, vom Browser definierte Steuerung zum Teilen von Standortdaten. In Chrome verfügt der Button beispielsweise über ein "Kartennadel"-Symbol und intuitiven Text ("Use location" in englischen Inhalten).
Es ermöglicht auch eine intuitive Verwaltung von Benutzerberechtigungen. Wenn beispielsweise der Benutzer in Chrome zuvor verweigert hat, die Standortdaten zuzulassen, oder den Berechtigungsdialog ohne Entscheidung geschlossen hat, kann er den Button erneut drücken, um seine Wahl zu aktualisieren. In Fällen, in denen die Berechtigung zuvor verweigert wurde, informieren nachfolgende Dialoge den Benutzer darüber, dass er zuvor das Teilen der Standortdaten nicht erlaubt hat, und fragen ihn, ob er dies weiterhin nicht erlauben oder es doch erlauben möchte.
Ein Schlüsselelement des <geolocation>-Elements ist, dass es die bewusste Entscheidung des Benutzers widerspiegelt und eine eventuelle Nutzung blockiert, die den Benutzer dazu verleiten könnte, seine Standortdaten ungewollt bereitzustellen (siehe <geolocation> blocking für weitere Informationen).
Die DOM API-Schnittstelle des Elements, HTMLGeolocationElement, bietet Funktionen zum Zugriff auf zurückgegebene Positionsdaten, aktuellen Berechtigungsstatus und Fehler, falls das Abrufen der Daten nicht erfolgreich war. Dadurch wird die Menge des zu schreibenden JavaScript-Codes reduziert. Es sind auch Ereignisse verfügbar, um Code als Reaktion auf empfangene Standortdaten, Änderungen im Berechtigungsstatus und Benutzerinteraktionen mit dem Berechtigungsdialog auszuführen.
Hinweis:
Aus Leistungsgründen sind maximal drei <geolocation>-Elemente auf einer Seite erlaubt. Wird dieses Kontingent überschritten, werden alle <geolocation>-Elemente deaktiviert.
Beziehung zur Geolocation API
Die Geolocation API bietet eine ältere Alternative zur Handhabung von Standortdaten. Diese API hat einige Mängel, die das <gelocation>-Element zu beheben versucht, insbesondere dass die Benutzeroberfläche und die zugrunde liegende Logik zur Anforderung der Daten jedes Mal von Grund auf neu implementiert werden müssen und die Handhabung der Berechtigungen unintuitiv sein kann.
Das <geolocation>-Element verwendet im Hintergrund Funktionen der Geolocation API. Standardmäßig fordert der Browser Standortdaten einmal an, als ob die Methode Geolocation.getCurrentPosition() aufgerufen wurde. Wenn jedoch das watch-Attribut auf true gesetzt ist, aktualisiert der Browser die Daten jedes Mal, wenn sich die Position des Geräts ändert, als ob Geolocation.watchPosition() aufgerufen wurde.
Wenn Daten erfolgreich abgerufen werden, sind sie in der HTMLGeolocationElement.position Eigenschaft verfügbar, die ein GeolocationPosition Objekt enthält. Wenn das Abrufen von Daten nicht erfolgreich ist, sind Fehlerinformationen in der HTMLGeolocationElement.error Eigenschaft verfügbar, die ein GeolocationPositionError Objekt enthält.
Sprache des Buttons einstellen
Das globale lang-Attribut wird vom <geolocation>-Element verwendet, um eine Sprache für den gerenderten Text auszuwählen. Das bedeutet, dass Sie ein lang-Attribut direkt auf dem <geolocation>-Element oder auf einem seiner Vorfahren setzen können, um dem Browser mitzuteilen, welche Sprache für die Buttonbeschriftung verwendet werden soll.
Wenn kein geeignetes lang-Attribut gesetzt ist, wird die bevorzugte Spracheinstellung des Browsers verwendet.
Fallback-Inhalt einfügen
Sie können Fallback-Inhalt zwischen den Öffnungs- und Schlusstags des <geolocation>-Elements einschließen, der angezeigt wird, wenn es nicht unterstützt wird. Zum Beispiel könnten Sie eine "Nicht unterstützt" Nachricht einfügen:
<geolocation>
<p>Your browser doesn't support the Geolocation element.</p>
</geolocation>
Eine bessere realitätsnahe Lösung könnte jedoch darin bestehen, ein reguläres <button>-Element einzuschließen, das die Geolocation API verwendet, um Standortdaten abzurufen:
<geolocation>
<button id="fallback">Use location</button>
</geolocation>
<geolocation>-Blocking
Eine Schlüsselidee hinter der Gestaltung des <geolocation>-Elements ist, dass es eine bewusste Entscheidung des Nutzers sein sollte, Positionsinformationen offenzulegen, und dass verhindert werden sollte, dass böswillige Akteure Nutzer dazu verleiten, es zu aktivieren, z.B. durch Clickjacking. Aus diesem Grund führt der Browser für jedes gerenderte Element Aufzeichnungen über sogenannte Blocker-Gründe.
Wenn ein Blocker auf einem <geolocation>-Element aktiv ist, wird dessen Funktion (zeitweise oder dauerhaft, je nach Grund) verhindert. Wenn ein <geolocation>-Element blockiert ist, gilt es als ungültig. Sie können überprüfen, ob es ungültig ist, indem Sie die HTMLGeolocationElement.isValid Eigenschaft abfragen. Außerdem können Sie den Grund, warum es ungültig ist, über die HTMLGeolocationElement.invalidReason Eigenschaft ermitteln — siehe diese Seite für eine vollständige Liste möglicher Gründe.
Styling-Einschränkungen
Das <geolocation>-Element unterliegt mehreren Einschränkungen bezüglich der CSS-Stile, die darauf angewendet werden können. Einige dieser Einschränkungen sollen grundlegende Zugänglichkeit erzwingen und führen dazu, dass der Button deaktiviert wird, wenn sie nicht eingehalten werden. Andere setzen bestimmte Werte oder Wertebereiche für verschiedene Eigenschaften durch.
Jegliche Eigenschaften, die nicht in den folgenden Unterabschnitten aufgelistet oder logisch äquivalent zu einer in den folgenden Unterabschnitten aufgeführten physischen Eigenschaft sind, werden ignoriert, wenn sie auf das <geolocation>-Element gesetzt werden.
Zugänglichkeitsbeschränkungen
Der gerenderte <geolocation>-Button wird deaktiviert (was bedeutet, dass das Drücken keinen Effekt hat), wenn die folgenden Einschränkungen nicht eingehalten werden:
- Das Farbkontrast-Verhältnis zwischen
colorundbackground-colormuss mindestens 3:1 betragen. - Die
font-sizedarf nicht kleiner als dersmall-Wert (bei Schlüsselwortwerten) oder sein berechneter Wert (bei anderen Werttypen) sein.
Wertbeschränkungen
Die folgenden CSS-Eigenschaftenwertbeschränkungen werden auf das <geolocation>-Element angewendet. Wenn versucht wird, diese Eigenschaften auf Werte außerhalb der aufgelisteten Beschränkungen auf dem <geolocation>-Element zu setzen, wird der Wert so angepasst, dass er der Beschränkung (im Falle einer genauen Wertbeschränkung) oder dem nächstgelegenen berechneten Wert oberhalb oder unterhalb entspricht (im Falle einer Bereichsbeschränkung).
opacity-
1.0 line-height-
normal white-space-
nowrap user-select-
none appearance-
auto box-sizing-
content-box vertical-align-
middle text-emphasis-
initial text-shadow-
initial outline-offset-
0oder größer. font-weight-
200oder größer. word-spacing-
Zwischen
0und0.5em, inklusive. letter-spacing-
Zwischen
-0.05emund0.2em, inklusive. min-height-
1emoder größer. max-height-
3emoder weniger.noneist ein akzeptierter Wert. min-width-
Der berechnete Wert von
fit-contentoder kleiner. border-width-
1emoder weniger.
Komplexe Einschränkungen
Die folgenden Einschränkungen sind komplexer als einfache Wertbeschränkungen:
- Blockrichtung-Polsterung
-
Wenn die
block-sizeaufautogesetzt ist, sind diepadding-block-startundpadding-block-end(und gleichwertige physische Eigenschaften für den aktuellen Schreibmodus) auf maximal1embeschränkt und müssen gleich sein. - Inline-Richtung-Polsterung
-
Wenn die
inline-sizeaufautogesetzt ist, sind diepadding-inline-startundpadding-inline-end(und gleichwertige physische Eigenschaften für den aktuellen Schreibmodus) auf maximal5embeschränkt und müssen gleich sein.
Eigenschaften, die normal gesetzt werden können
Die folgenden CSS-Eigenschaften können normal verwendet werden:
font-kerningfont-optical-sizingfont-stretchfont-synthesis-weightfont-synthesis-stylefont-synthesis-small-capsfont-feature-settingsforced-color-adjusttext-renderingalign-selfanchor-nameaspect-ratioborder,border-top,border-right,border-bottom, undborder-leftclearcolor-schemecontain-intrinsic-widthcontain-intrinsic-heightcontainer-namecontainer-typecounter-reset,counter-increment, undcounter-setflex,flex-grow,flex-shrink, undflex-basisfloatheightisolationjustify-selfleftorderorphansoutline,outline-color, undoutline-styleoverflow-anchoroverscroll-behavior,overscroll-behavior-inline,overscroll-behavior-block,overscroll-behavior-x, undoverscroll-behavior-ypagepositionposition-anchorrightscroll-margin,scroll-margin-top,scroll-margin-right,scroll-margin-bottom, undscroll-margin-leftscroll-padding,scroll-padding-top,scroll-padding-right,scroll-padding-bottom,scroll-padding-left,scroll-padding-inline-start,scroll-padding-block-start,scroll-padding-block-start,scroll-padding-inline-end, undscroll-padding-block-endtext-spacing-trimtext-transformtopvisibilityxyruby-positionuser-selectwidthwill-changez-index
Zugänglichkeit
Das <geolocation>-Element hat einen zugänglichen Namen, der in der eingestellten Sprache geschrieben ist. Es hat auch eine role von button, sodass es von Screenreadern als Button erkannt wird.
Darüber hinaus hat das <geolocation>-Element einen standardmäßigen tabindex-Wert von 0, sodass es sich wie ein echtes <button> bezüglich Tastaturfokus verhält.
Schließlich verweisen Sie auf den Abschnitt Zugänglichkeitsbeschränkungen für Informationen zu Styling-Einschränkungen, die auf das <geolocation>-Element angewendet werden, um grundlegende Zugänglichkeitsanforderungen durchzusetzen.
Beispiele
>Grundlegendes Anwendungsbeispiel
Dieses Beispiel verwendet das <geolocation>-Element, um Ihren aktuellen Standort abzurufen, der unter dem Button in einem <p>-Element ausgegeben wird. Das Beispiel verwendet auch einen regulären <button>-Fallback, um die Standortdaten in nicht unterstützenden Browsern abzurufen.
HTML
Wir fügen ein <geolocation>-Element mit einem darin verschachtelten <button>-Fallback ein, das in Browsern gerendert wird, die <geolocation> nicht unterstützen. Wir fügen auch ein <p> hinzu, um Standortdaten und Fehlerausgaben auszugeben.
<geolocation>
<button id="fallback">Use location</button>
</geolocation>
<p id="output"></p>
JavaScript
In unserem Skript holen wir uns zunächst eine Referenz auf das Ausgabeelement <p>. Dann überprüfen wir, ob das <geolocation>-Element unterstützt wird, indem wir typeof HTMLGeolocationElement === "function" testen:
- Wenn es unterstützt wird, holen wir zunächst eine Referenz auf das
<geolocation>-Element und fügen dann einenlocationEreignis-Listener hinzu. Wenn der Button gedrückt wird und die Daten abgerufen werden, druckt der Listener die (Lat, Long) Koordinaten in das Ausgabeelement<p>(abgerufen über diepositionEigenschaft) oder eine Fehlermeldung, falls das Abrufen der Daten nicht erfolgreich war (abgerufen über dieerrorEigenschaft). - Wenn es nicht unterstützt wird, holen wir eine Referenz auf das Fallback
<button>-Element und rufen die gleichen Daten ab und drucken sie aus, jedoch diesmal mit einemclick-Ereignis-Listener auf dem Button und einemGeolocation.getCurrentPosition()-Aufruf, um die Daten abzurufen.
const outputElem = document.querySelector("#output");
if (typeof HTMLGeolocationElement === "function") {
const geo = document.querySelector("geolocation");
geo.addEventListener("location", () => {
if (geo.position) {
outputElem.textContent += `(${geo.position.coords.latitude},${geo.position.coords.longitude}), `;
} else if (geo.error) {
outputElem.textContent += `${geo.error.message}, `;
}
});
} else {
const fallback = document.querySelector("#fallback");
fallback.addEventListener("click", () => {
navigator.geolocation.getCurrentPosition(
(position) => {
outputElem.textContent += `(${position.coords.latitude}, ${position.coords.longitude}), `;
},
(error) => {
outputElem.textContent += `${error.message}, `;
},
);
});
}
Ergebnis
Sehen Sie sich diesen Code live in Aktion an (Quellcode). Sie können auch eine Version dieses Beispiels finden, die das watch-Attribut auf dem <geolocation>-Element enthält und daher Standortdaten jedes Mal abruft, wenn sich die Position des Geräts des Benutzers ändert (sehen Sie es live in Aktion, und den Quellcode).
Versuchen Sie, die Demos in einem unterstützten und einem nicht unterstützten Browser anzusehen, wenn möglich, und beachten Sie den Unterschied im Berechtigungsdialog, wenn Sie die Erlaubnis zur Verwendung von geolocation erteilen oder verweigern.
Für eine Schritt-für-Schritt-Anleitung zu einem umfassenderen Beispiel, das Standortdaten verwendet, um eine Karte Ihrer Umgebung zu erstellen, sehen Sie sich die HTMLGeolocationElement Referenzseite an.
Technische Zusammenfassung
| Inhaltskategorien | Fließinhalt, Phraseninhalt, interaktiver Inhalt, fühlbarer Inhalt. |
|---|---|
| Erlaubter Inhalt | Beliebiger geeigneter transparenter Fallback-Inhalt. |
| Tag-Auslassung | Keine, sowohl der Starttag als auch der Endtag sind erforderlich. |
| Erlaubte Eltern | Jedes Element, das Phraseninhalt akzeptiert. |
| Implizite ARIA-Rolle | Keine entsprechende Rolle |
| Erlaubte ARIA-Rollen |
button
|
| DOM-Schnittstelle | [`HTMLGeolocationElement`](/de/docs/Web/API/HTMLGeolocationElement) |
Spezifikationen
This feature does not appear to be defined in any specification.>Browser-Kompatibilität
Siehe auch
HTMLGeolocationElement- Die
geolocationBerechtigungsrichtlinie - Geolocation API
- Berechtigungs-API
- Einführung in das
<geolocation>HTML-Element auf developer.chrome.com (2026)