Start · Sprachen · JavaScript · Referenz · Navigator.oscpu

Navigator.oscpu

Eigenschaft

Die schreibgeschützte Eigenschaft <code>navigator.oscpu</code> gibt einen String zurück, der das Betriebssystem und die CPU-Architektur beschreibt. Sie gibt es nur in Firefox.

seit JavaScript Nicht standardisiert: nur Firefox (Gecko) Kategorie: webapi

Signatur

Navigator.oscpu

Beschreibung

Die Eigenschaft Navigator.oscpu liefert einen kurzen String, der das Betriebssystem und meist auch die Prozessor-Architektur beschreibt, zum Beispiel "Windows NT 10.0; Win64; x64", "Intel Mac OS X 10.15" oder "Linux x86_64". Der Wert entspricht in der Regel dem Plattform-Teil in Klammern aus dem User-Agent-String von Firefox.

Die Eigenschaft ist nicht standardisiert und wird nur von Firefox (Gecko) unterstützt. In Chrome, Edge und Safari ist navigator.oscpu undefined. Man sollte sie deshalb höchstens für Diagnose- oder Protokollzwecke nutzen, etwa in Fehlerberichten. Für die Steuerung von Programmlogik ist sie nicht geeignet.

Für moderne Plattform-Erkennung gibt es besser unterstützte Wege. Die User-Agent Client Hints API (navigator.userAgentData) funktioniert in Chromium-Browsern. Noch besser ist Feature Detection: Man prüft direkt, ob eine benötigte API vorhanden ist, statt vom Betriebssystem auf Fähigkeiten zu schließen.

Rückgabewert

Typ
string | undefined
Beschreibung
In Firefox ein String, der Betriebssystem und Architektur beschreibt, z. B. "Windows NT 10.0; Win64; x64". In anderen Browsern ist die Eigenschaft nicht vorhanden, der Wert ist dann undefined.

Beispiele

Betriebssystem-String auslesen

// Gibt in Firefox z. B. den Plattform-String aus
console.log(navigator.oscpu);
Windows NT 10.0; Win64; x64 (Firefox) undefined (Chrome/Safari/Edge)

Sicherer Zugriff mit Fallback für Fehlerberichte

const getPlatformInfo = () => {
  if (typeof navigator.oscpu === 'string') {
    return navigator.oscpu;
  }
  // Chromium: User-Agent Client Hints
  if (navigator.userAgentData?.platform) {
    return navigator.userAgentData.platform;
  }
  return 'unbekannt';
};

const report = {
  message: 'Upload fehlgeschlagen',
  platform: getPlatformInfo(),
  time: new Date().toISOString()
};
console.log(report.platform);
Linux x86_64 (Firefox unter Linux) Windows (Chrome unter Windows)

Grobe Betriebssystem-Erkennung (nur zur Anzeige)

const detectOS = () => {
  const src = navigator.oscpu ?? navigator.userAgent;
  if (/Windows/i.test(src)) return 'Windows';
  if (/Mac OS X/i.test(src)) return 'macOS';
  if (/Android/i.test(src)) return 'Android';
  if (/Linux/i.test(src)) return 'Linux';
  return 'Unbekannt';
};

document.body.dataset.os = detectOS();
console.log(`Erkanntes System: ${detectOS()}`);
Erkanntes System: macOS

// Wichtig · Fallstricke

  • Browser-Kompatibilität: Nur Firefox unterstützt die Eigenschaft. Sie ist in keiner Spezifikation festgelegt. Prüfe den Typ deshalb immer vor der Nutzung, zum Beispiel mit typeof navigator.oscpu === 'string'.
  • Werte sind absichtlich ungenau: Zum Schutz der Privatsphäre gibt Firefox gekürzte oder feste Werte aus. Unter macOS erscheint zum Beispiel oft 10.15, auch wenn eine neuere Version installiert ist. Windows 11 meldet sich als Windows NT 10.0. Ist privacy.resistFingerprinting aktiv, liefert Firefox einen vereinheitlichten Wert.
  • Vom Nutzer änderbar: Über die Einstellung general.oscpu.override in about:config kann jeder den Wert frei festlegen. Er ist daher nicht vertrauenswürdig und darf nie für Sicherheitsentscheidungen verwendet werden.
  • Fingerprinting: Solche Angaben tragen zum Browser-Fingerprinting bei. Erhebe sie nur, wenn es wirklich nötig ist, und beachte den Datenschutz (DSGVO).
  • Die Eigenschaft ist schreibgeschützt. Zuweisungen werden stillschweigend ignoriert.
  • Besser ist Feature Detection, statt vom Betriebssystem auf Fähigkeiten zu schließen.