Start · Sprachen · JavaScript · Referenz · WorkerLocation.pathname

WorkerLocation.pathname

Eigenschaft

Gibt den Pfad-Teil der URL des Worker-Skripts als String zurück, beginnend mit <code>/</code>, z. B. <code>/js/worker.js</code>.

seit JavaScript Baseline: alle modernen Browser (Web Worker, Share Kategorie: webapi

Signatur

WorkerLocation.pathname

Beschreibung

Die schreibgeschützte Eigenschaft pathname des WorkerLocation-Objekts liefert den Pfad-Teil der URL, von der das Worker-Skript geladen wurde. Der Wert beginnt immer mit einem Schrägstrich / und enthält weder Protokoll, Host, Port, Abfrage-String (search) noch Fragment (hash).

Innerhalb eines Workers erreichst du das Objekt über self.location bzw. einfach location. Anders als window.location ist WorkerLocation nicht beschreibbar – der Worker kann also nicht durch Zuweisen einer neuen URL „navigieren“.

Nützlich ist pathname, wenn ein Worker Ressourcen relativ zu seinem eigenen Verzeichnis laden soll (z. B. mit importScripts() oder fetch()), wenn er seine Version oder Konfiguration aus dem Dateinamen ablesen soll oder wenn du Log-Ausgaben mehrerer Worker auseinanderhalten willst.

Rückgabewert

Typ
string
Beschreibung
Der Pfad der Worker-Skript-URL, prozentkodiert (Percent-Encoding), beginnend mit /. Bei blob:- oder data:-URLs der undurchsichtige Pfad-Teil dieser URL.

Beispiele

Pfad des Worker-Skripts ausgeben

// main.js
const worker = new Worker('/js/workers/rechner.js?v=3#debug');
worker.onmessage = (e) => console.log('Worker meldet:', e.data);

// /js/workers/rechner.js
postMessage(self.location.pathname);
Worker meldet: /js/workers/rechner.js

Ressourcen relativ zum eigenen Verzeichnis laden

// Im Worker: Verzeichnis des eigenen Skripts ermitteln
const verzeichnis = location.pathname.slice(0, location.pathname.lastIndexOf('/') + 1);
console.log(verzeichnis);

// Hilfsbibliothek aus demselben Ordner laden (klassischer Worker)
importScripts(`${verzeichnis}helfer.js`);

// Alternativ, robuster über die URL-API:
const configUrl = new URL('config.json', location.href);
const config = await (await fetch(configUrl)).json();
/js/workers/

Worker-Typ anhand des Dateinamens bestimmen

// Im Worker
const dateiname = decodeURIComponent(location.pathname.split('/').pop());
const modus = dateiname.includes('bild') ? 'bildverarbeitung' : 'allgemein';

console.log(`[${dateiname}] gestartet im Modus: ${modus}`);
[bild-worker.js] gestartet im Modus: bildverarbeitung

// Wichtig · Fallstricke

  • Nur lesbar: Eine Zuweisung an location.pathname im Worker hat keine Wirkung (im Strict Mode bzw. in Modul-Workern wirft sie einen TypeError).
  • Prozentkodierung: Sonderzeichen und Leerzeichen erscheinen kodiert (z. B. %20). Für Anzeigezwecke mit decodeURIComponent() dekodieren.
  • Blob- und Data-URLs: Wird der Worker aus URL.createObjectURL() erzeugt, liefert pathname etwas wie https://example.com/550e8400-… statt eines sinnvollen Dateipfads – relative Pfadberechnungen funktionieren dann nicht.
  • Weiterleitungen: Der Wert entspricht der endgültigen Skript-URL nach eventuellen Redirects.
  • Für das Auflösen relativer Pfade ist new URL(pfad, location.href) meist robuster als manuelle String-Operationen auf pathname.
  • Kompatibilität: in allen modernen Browsern seit vielen Jahren verfügbar; in Node.js-worker_threads existiert WorkerLocation nicht.