Start · Sprachen · JavaScript · Referenz · Navigator.appName

Navigator.appName

Eigenschaft

Schreibgeschützte Eigenschaft, die laut Spezifikation in jedem modernen Browser immer den Text <code>"Netscape"</code> liefert.

seit JavaScript Baseline: alle Browser (veraltet, nur aus Kompatib Kategorie: webapi

Signatur

Navigator.appName

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

Typ
string
Beschreibung
In allen standardkonformen Browsern immer "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);
Netscape

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}`);
Alter IE erkannt: false

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);
Kopiert über Clipboard-API

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);
Worker meldet: Netscape

// 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 einen TypeError aus.
  • 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") und navigator.product (immer "Gecko") sind aus denselben historischen Gründen fest vorgegeben.