Signatur
Beschreibung
Die Methode toString() des Location-Interfaces ist ein sogenannter Stringifizierer. Sie liefert die gesamte URL des Dokuments als String, also Protokoll, Host, Port, Pfad, Query-String und Fragment. Der Rückgabewert entspricht genau dem Lesewert von location.href.
Normalerweise ruft man toString() nicht selbst auf. Die Methode wird automatisch verwendet, wenn ein Location-Objekt in einen String umgewandelt wird: in Template-Literalen, bei Verkettung mit +, bei String(location) oder bei Übergabe an APIs, die einen String erwarten, zum Beispiel new URL(location).
Ein expliziter Aufruf lohnt sich, wenn man deutlich machen will, dass ein primitiver String gebraucht wird und keine Referenz auf das veränderliche Location-Objekt. Das ist etwa beim Speichern, Loggen oder Vergleichen von URLs der Fall. Anders als href ist toString() nur lesend. Mit der Methode kann man also nicht navigieren.
Rückgabewert
location.href.Beispiele
Aktuelle URL auslesen
// Angenommen, die Seite ist https://example.com:8080/shop/artikel?id=42#details
const url = location.toString();
console.log(url);
console.log(url === location.href);
Implizite Umwandlung in Template-Literal und Verkettung
// toString() wird automatisch aufgerufen
console.log(`Aktuelle Seite: ${location}`);
console.log('Seite: ' + location);
console.log(typeof location, typeof String(location));
URL für Fehlerbericht an den Server senden
const meldeFehler = async (fehler) => {
await fetch('/api/fehler', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
nachricht: fehler.message,
// Primitiver String statt Location-Objekt
seite: location.toString(),
zeitpunkt: new Date().toISOString()
})
});
};
window.addEventListener('error', (e) => meldeFehler(e.error ?? new Error(e.message)));
Query-Parameter mit URL-Objekt auswerten
// new URL() ruft intern toString() auf
const aktuelleUrl = new URL(location.toString());
const seite = aktuelleUrl.searchParams.get('seite') ?? '1';
console.log(`Seite ${seite} von ${aktuelleUrl.pathname}`);
// Wichtig · Fallstricke
- Nur lesend:
toString()verändert die URL nicht. Für eine Navigation verwendet manlocation.href = …,location.assign()oderlocation.replace(). - Fragment enthalten: Der Rückgabewert enthält auch den Hash (
#…). Wenn der Hash stört, etwa beim Vergleichen von URLs, baut man die URL mitlocation.origin + location.pathname + location.searchzusammen. - Serialisierung ist Momentaufnahme: Ein gespeicherter String wird nicht aktualisiert. Nach
history.pushState()oder einer Hash-Änderung musstoString()erneut aufgerufen werden. - JSON:
JSON.stringify(location)liefert keinen URL-String. Stattdessen entsteht ein Objekt mit den Eigenschaften. Deshalb vorher explizitlocation.toString()verwenden. - Sicherheit: Die URL kann sensible Daten enthalten, etwa Tokens im Query-String oder Fragment, und ist vom Nutzer steuerbar. Sie darf nie ungeprüft über
innerHTMLausgegeben werden (XSS-Gefahr). Vor dem Loggen oder Weitergeben sollte man sensible Parameter entfernen. - Kompatibilität: Die Methode wird von allen Browsern unterstützt, auch von sehr alten. In Web Workern gibt es das Gegenstück
WorkerLocation.toString().