Signatur
Beschreibung
Die Eigenschaft platform des NavigatorUAData-Interfaces gehört zur User-Agent Client Hints API. Sie gibt den Namen der Plattform zurück, also in der Regel das Betriebssystem, auf dem der Browser läuft. Typische Werte sind "Windows", "macOS", "Linux", "Chrome OS", "Android" oder "iOS". Der Wert kann auch ein leerer String sein, wenn der Browser die Angabe zurückhält.
Zugegriffen wird über navigator.userAgentData.platform. Die Information gehört zu den sogenannten Low-Entropy-Hinweisen. Deshalb steht sie synchron und ohne Nachfrage zur Verfügung, anders als z. B. platformVersion, das nur asynchron über getHighEntropyValues() abgefragt werden kann.
Mit platform sollte man das veraltete, schwer auswertbare navigator.platform und das Zerlegen des navigator.userAgent-Strings ersetzen. Das ist z. B. sinnvoll, um Tastenkürzel passend anzuzeigen (⌘ statt Strg) oder den richtigen Download-Link vorzuschlagen. Für Funktionsprüfungen sollte man aber weiterhin Feature Detection nutzen und nicht das Betriebssystem abfragen.
Rückgabewert
"Windows", "macOS", "Linux", "Android", "Chrome OS". Kann auch "" (leer) oder "Unknown" sein.Beispiele
Plattform auslesen mit Rückfallwert
const getPlatform = () => {
// userAgentData gibt es nur in Chromium-Browsern und nur in sicheren Kontexten (HTTPS)
if (navigator.userAgentData) {
return navigator.userAgentData.platform || 'unbekannt';
}
// Rückfall auf die veraltete Eigenschaft
return navigator.platform || 'unbekannt';
};
console.log(getPlatform());
Tastenkürzel passend zum Betriebssystem anzeigen
const platform = navigator.userAgentData?.platform ?? navigator.platform;
const isMac = /mac/i.test(platform);
const modKey = isMac ? '⌘' : 'Strg';
document.querySelector('#save-hint').textContent = `Speichern: ${modKey} + S`;
console.log(`Modifikator: ${modKey}`);
Passenden Download-Link vorschlagen
const downloads = {
Windows: '/download/app-setup.exe',
macOS: '/download/app.dmg',
Linux: '/download/app.AppImage'
};
const platform = navigator.userAgentData?.platform;
const link = downloads[platform] ?? '/download';
console.log(`Empfohlener Download: ${link}`);
Plattform zusammen mit der Version (High Entropy) abfragen
const showPlatformDetails = async () => {
if (!navigator.userAgentData) return console.log('UA-CH nicht unterstützt');
const { platform } = navigator.userAgentData;
const { platformVersion } = await navigator.userAgentData
.getHighEntropyValues(['platformVersion']);
console.log(`${platform} ${platformVersion}`);
};
showPlatformDetails();
// Wichtig · Fallstricke
- Browser-Kompatibilität:
navigator.userAgentDatagibt es nur in Chromium-Browsern (Chrome, Edge, Opera, ab Version 90). Firefox und Safari unterstützen es nicht. Dort ist der Wertundefined, daher immer optional verketten (?.) oder einen Rückfallwert vorsehen. - Nur in sicheren Kontexten: Die API steht nur über HTTPS bzw.
localhostzur Verfügung. - Werte nicht zu eng prüfen: Die Schreibweise ist nicht streng genormt (z. B.
"Chrome OS"und"Chromium OS"). Der Wert kann auch leer sein. Deshalb lieber tolerant abgleichen, z. B. mit regulären Ausdrücken ohne Beachtung der Groß-/Kleinschreibung. - Keine Versionsangabe:
platformnennt keine Betriebssystemversion. Dafür gibt esgetHighEntropyValues(['platformVersion']). Unter Windows entsprichtplatformVersionnicht direkt der Marketing-Version: Ab13.0.0ist es Windows 11. - Datenschutz: Der Wert kann sich durch Browser-Einstellungen, Erweiterungen oder die DevTools-Geräteemulation ändern. Er eignet sich nicht für sicherheitsrelevante Entscheidungen.
- Serverseitig liefert der HTTP-Header
Sec-CH-UA-Platformdieselbe Information.