Start · Sprachen · JavaScript · Referenz · WorkerLocation.toString()

WorkerLocation.toString()

Methode

Gibt die vollständige, serialisierte URL des Worker-Skripts als Zeichenkette zurück – identisch mit <code>WorkerLocation.href</code>.

seit JavaScript Baseline: alle Browser (Web Worker) Kategorie: webapi

Signatur

WorkerLocation.prototype.toString()

Beschreibung

Die Methode toString() eines WorkerLocation-Objekts liefert die vollständige URL des gerade ausgeführten Worker-Skripts. Das Objekt erreicht man im Worker über self.location (bzw. einfach location). Der Rückgabewert ist genau derselbe wie bei der schreibgeschützten Eigenschaft WorkerLocation.href.

Da es sich um einen sogenannten Stringifier handelt, wird die Methode automatisch aufgerufen, sobald das Objekt in einen String umgewandelt wird, etwa in Template-Literalen, bei der Verkettung mit + oder bei String(location). Deshalb ruft man sie selten ausdrücklich auf.

Praktisch nützlich ist das, wenn man relative Pfade zum Worker-Skript auflösen will (zum Beispiel für importScripts() oder fetch()), wenn man die Worker-URL protokollieren möchte oder wenn man sie an den Hauptthread zurückmeldet. Anders als window.location ist WorkerLocation nur lesbar. Eine Navigation ist darüber nicht möglich.

Beispiele

Worker-URL explizit und implizit auslesen

// worker.js
console.log(self.location.toString());
console.log(`${location}`);           // implizite Umwandlung
console.log(String(location) === location.href);
https://example.com/js/worker.js https://example.com/js/worker.js true

URL an den Hauptthread melden

// main.js
const worker = new Worker('/js/worker.js?build=42');
worker.addEventListener('message', (event) => {
  console.log('Worker läuft unter:', event.data);
});

// worker.js
self.postMessage(location.toString());
Worker läuft unter: https://example.com/js/worker.js?build=42

Relative Ressourcen im Verhältnis zum Worker-Skript auflösen

// worker.js (geladen von https://example.com/js/worker.js)
const dataUrl = new URL('../data/config.json', location.toString());

const loadConfig = async () => {
  const response = await fetch(dataUrl);
  return response.json();
};

console.log(dataUrl.href);
https://example.com/data/config.json

Query-Parameter der Worker-URL auswerten

// main.js: new Worker('worker.js?mode=debug')
// worker.js
const params = new URL(location.toString()).searchParams;
const debug = params.get('mode') === 'debug';
console.log('Debug-Modus:', debug);
Debug-Modus: true

// Wichtig · Fallstricke

  • toString() und href geben immer denselben Wert zurück. Für einzelne Bestandteile wie pathname, search oder hash sollte man lieber direkt die passenden Eigenschaften von WorkerLocation nutzen oder die URL mit new URL() zerlegen.
  • WorkerLocation gibt es nur in Worker-Kontexten (DedicatedWorkerGlobalScope, SharedWorkerGlobalScope, ServiceWorkerGlobalScope). Im Hauptthread verweist location dagegen auf window.location.
  • Bei Workern, die aus einem Blob erzeugt wurden (URL.createObjectURL()), liefert die Methode eine blob:-URL. Relative Pfade lassen sich dann nicht sinnvoll dagegen auflösen. In dem Fall sollte man die Basis-URL besser per postMessage übergeben.
  • Die URL kann Query-Parameter mit sensiblen Daten enthalten, etwa Tokens. Vorsicht beim Protokollieren oder Weitergeben.
  • Browser-Kompatibilität: Die Methode wird von allen modernen Browsern unterstützt, sofern sie Web Worker anbieten.