Signatur
Beschreibung
WorkerNavigator.appCodeName ist eine nur lesbare Eigenschaft des navigator-Objekts, das innerhalb eines Web Workers (Dedicated, Shared oder Service Worker) über self.navigator erreichbar ist. Sie entspricht Navigator.appCodeName im Hauptthread.
Laut HTML-Spezifikation muss der Wert in jedem Browser "Mozilla" sein, auch in Chrome, Safari und Edge. Das ist ein Überbleibsel aus der Zeit der Browserkriege: Damals haben viele Browser „Mozilla“ angegeben, damit Webseiten ihnen dieselben Funktionen zutrauen wie dem Netscape Navigator.
Die Eigenschaft gibt deshalb keine Auskunft über den tatsächlichen Browser. Sie existiert nur noch, damit alter Code nicht bricht. In neuem Code sollte man sie nicht verwenden. Zur Browser-Erkennung ist Feature-Erkennung (z. B. 'fetch' in self) fast immer die bessere Wahl. Wer wirklich Informationen über den Browser braucht, greift auf navigator.userAgentData (User-Agent Client Hints) oder notfalls auf navigator.userAgent zurück.
Rückgabewert
"Mozilla".Beispiele
Wert im Dedicated Worker auslesen
// worker.js
console.log(self.navigator.appCodeName);
// main.js
const worker = new Worker('worker.js');
Navigator-Infos aus dem Worker an den Hauptthread senden
// info-worker.js
const { appCodeName, appName, platform, userAgent } = self.navigator;
self.postMessage({ appCodeName, appName, platform, userAgent });
// main.js
const worker = new Worker('info-worker.js');
worker.addEventListener('message', ({ data }) => {
console.log(`appCodeName: ${data.appCodeName}`);
worker.terminate();
});
Besser: Feature-Erkennung statt appCodeName
// worker.js – NICHT sinnvoll, da immer true:
const istMozilla = self.navigator.appCodeName === 'Mozilla';
console.log(istMozilla);
// Sinnvoll: nach der benötigten Fähigkeit fragen
const kannOffscreen = typeof OffscreenCanvas !== 'undefined';
const kannIndexedDB = 'indexedDB' in self;
console.log({ kannOffscreen, kannIndexedDB });
// Wichtig · Fallstricke
- Veraltet: Die Eigenschaft ist nur noch aus Kompatibilitätsgründen spezifiziert. Sie liefert immer
"Mozilla"und eignet sich daher nicht zur Browser-Erkennung. - Nur lesbar: Eine Zuweisung wie
navigator.appCodeName = 'X'wird im Normalmodus stillschweigend ignoriert und hat keine Wirkung. - Nur im Worker-Kontext als
WorkerNavigatorverfügbar. Im Hauptthread heißt das GegenstückNavigator.appCodeName, der Wert ist derselbe. - Kompatibilität: In allen modernen Browsern vorhanden. Ältere Versionen von Firefox und Chrome hatten die Eigenschaft in Workern zeitweise noch nicht.
- Für Browser-Informationen besser
navigator.userAgentDataverwenden (bisher nur in Chromium-Browsern) oder, falls nötig,navigator.userAgent.