Signatur
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
/. 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);
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();
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}`);
// Wichtig · Fallstricke
- Nur lesbar: Eine Zuweisung an
location.pathnameim Worker hat keine Wirkung (im Strict Mode bzw. in Modul-Workern wirft sie einenTypeError). - Prozentkodierung: Sonderzeichen und Leerzeichen erscheinen kodiert (z. B.
%20). Für Anzeigezwecke mitdecodeURIComponent()dekodieren. - Blob- und Data-URLs: Wird der Worker aus
URL.createObjectURL()erzeugt, liefertpathnameetwas wiehttps://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 aufpathname. - Kompatibilität: in allen modernen Browsern seit vielen Jahren verfügbar; in Node.js-
worker_threadsexistiertWorkerLocationnicht.