Signatur
Beschreibung
Die Eigenschaft navigator.platform gibt einen String zurück, der das Betriebssystem bzw. die Hardware-Plattform des Browsers beschreibt. Typische Werte sind "Win32" (auch auf 64-Bit-Windows), "MacIntel" (auch auf Apple-Silicon-Macs), "Linux x86_64", "Linux armv8l", "iPhone" oder "iPad". Ein leerer String ist ebenfalls möglich.
Früher diente die Eigenschaft vor allem dazu, plattformspezifische Hinweise anzuzeigen, etwa die passende Tastenkombination (⌘ auf macOS, Strg auf Windows/Linux) oder den richtigen Download-Link. Für genau diesen engen Zweck ist sie bis heute verbreitet, weil es keinen gleichwertigen, überall verfügbaren Ersatz gibt.
Die Spezifikation erlaubt Browsern ausdrücklich, hier einen festen oder bewusst ungenauen Wert zu liefern, um Fingerprinting zu erschweren. Deshalb gilt: Nicht für Logik verwenden, die von einer exakten Erkennung abhängt. Besser ist Feature-Erkennung (etwa 'ontouchstart' in window oder matchMedia('(pointer: coarse)')) oder, in Chromium-Browsern, navigator.userAgentData.platform (User-Agent Client Hints).
Rückgabewert
"Win32", "MacIntel", "Linux x86_64", "iPhone"; unter Umständen ein leerer String "".Beispiele
Plattform-String auslesen
const platform = navigator.platform;
console.log(`Plattform: ${platform || '(unbekannt)'}`);
Richtige Modifikatortaste für Tastenkürzel anzeigen
// Mac-Erkennung: bevorzugt Client Hints, sonst navigator.platform
const isMac = () => {
const p = navigator.userAgentData?.platform ?? navigator.platform ?? '';
return /mac|iphone|ipad|ipod/i.test(p);
};
const modKey = isMac() ? '⌘' : 'Strg';
document.querySelector('#save-hint').textContent = `${modKey} + S zum Speichern`;
Tastenkürzel plattformgerecht abfangen
const isMac = /mac/i.test(navigator.platform);
document.addEventListener('keydown', (event) => {
const mod = isMac ? event.metaKey : event.ctrlKey;
if (mod && event.key.toLowerCase() === 's') {
event.preventDefault();
console.log('Dokument wird gespeichert …');
}
});
// Wichtig · Fallstricke
- Veraltet/nicht empfohlen: Die Eigenschaft ist zwar in allen Browsern vorhanden, gilt aber als Altlast. Browser dürfen feste oder verfälschte Werte liefern (Datenschutz, Fingerprinting-Schutz).
- Irreführende Werte: 64-Bit-Windows meldet meist
"Win32", Apple-Silicon-Macs melden"MacIntel". iPadOS 13+ gibt sich im Desktop-Modus als"MacIntel"aus – zur Unterscheidung ggf.navigator.maxTouchPoints > 1prüfen. - Firefox kann den Wert über
general.platform.overridebzw. mit aktiviertemprivacy.resistFingerprintingverändern. - Alternative:
navigator.userAgentData.platform(z. B."macOS","Windows") – nur in Chromium-basierten Browsern und nur in sicheren Kontexten (HTTPS) verfügbar; daher immer mit Fallback nutzen. - Für Funktionsunterscheidungen stets Feature-Erkennung statt Plattform-Erkennung verwenden.
- In Web Workern steht die Eigenschaft ebenfalls über
WorkerNavigator.platformzur Verfügung; in Node.js gibt es stattdessenprocess.platform(ab Node.js 21 auchnavigator.platform).