Signatur
Beschreibung
navigator.appName sollte ursprünglich den Namen des Browsers liefern. Weil viele alte Skripte Browser anhand dieses Werts erkannt und Funktionen gezielt nur für „Netscape“ freigeschaltet haben, gaben andere Hersteller schon früh ebenfalls "Netscape" zurück. Der HTML-Standard legt diesen Wert heute verbindlich fest: Chrome, Firefox, Safari, Edge und Opera liefern immer "Netscape".
Die Eigenschaft ist schreibgeschützt und gehört zum Mixin NavigatorID. Sie ist auch in Web Workers über WorkerNavigator verfügbar (self.navigator.appName).
Für die Browsererkennung ist appName wertlos. Sie kommt praktisch nur noch in Altcode vor oder in Code, der alte Internet-Explorer-Versionen (IE ≤ 10 lieferten "Microsoft Internet Explorer") von anderen unterscheiden soll. In neuem Code solltest du stattdessen per Feature Detection prüfen, ob die benötigte API vorhanden ist.
Rückgabewert
"Netscape". Nur sehr alte Internet-Explorer-Versionen (bis IE 10) lieferten "Microsoft Internet Explorer".Beispiele
Wert auslesen
// Ausgabe in jedem modernen Browser gleich
console.log(navigator.appName);
Altcode: sehr alten Internet Explorer erkennen
// Nur zur Wartung von Altcode: IE ≤ 10 meldete einen anderen Namen
const isOldIE = navigator.appName === 'Microsoft Internet Explorer';
if (isOldIE) {
document.body.classList.add('legacy-ie');
}
console.log(`Alter IE erkannt: ${isOldIE}`);
Besser: Feature Detection statt appName
// Statt den Browsernamen zu prüfen, direkt die benötigte API testen
const copyText = async (text) => {
if (navigator.clipboard?.writeText) {
await navigator.clipboard.writeText(text);
return 'Kopiert über Clipboard-API';
}
return 'Clipboard-API nicht verfügbar';
};
copyText('Hallo Welt').then(console.log);
Im Web Worker verwenden
// worker.js
self.postMessage(`Worker meldet: ${self.navigator.appName}`);
// main.js
const worker = new Worker('worker.js');
worker.onmessage = (event) => console.log(event.data);
// Wichtig · Fallstricke
- Nicht zur Browsererkennung verwenden: Der Wert ist per Spezifikation überall
"Netscape", auch in Chrome, Safari und Edge. Er verrät nichts über den tatsächlichen Browser. - Veraltet: Die Eigenschaft ist nur aus Kompatibilitätsgründen erhalten. Verwende Feature Detection (z. B.
'serviceWorker' in navigator) oder, falls unbedingt nötig,navigator.userAgentData. Letzteres gibt es nur in Chromium-Browsern. - Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wie
navigator.appName = 'X'wird im Sloppy Mode stillschweigend ignoriert und löst im Strict Mode einenTypeErroraus. - In Firefox lässt sich der Wert über die Einstellung
general.appname.overrideändern. Verlassen kannst du dich also auch darauf nicht. - Auch
navigator.appCodeName(immer"Mozilla") undnavigator.product(immer"Gecko") sind aus denselben historischen Gründen fest vorgegeben.