Signatur
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
"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);
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);
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()}`);
// 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 alsWindows NT 10.0. Istprivacy.resistFingerprintingaktiv, liefert Firefox einen vereinheitlichten Wert. - Vom Nutzer änderbar: Über die Einstellung
general.oscpu.overrideinabout:configkann 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.