Start · Sprachen · JavaScript · Referenz · WorkerNavigator.platform

WorkerNavigator.platform

Eigenschaft

Liefert innerhalb eines Workers einen schreibgeschützten String, der die Plattform des Browsers beschreibt, z. B. <code>"Win32"</code> oder <code>"MacIntel"</code>.

seit JavaScript Baseline: alle modernen Browser (in Web Workern) Kategorie: webapi

Signatur

WorkerNavigator.platform

Beschreibung

Die Eigenschaft platform des WorkerNavigator-Objekts ist das Gegenstück zu navigator.platform im Hauptthread. Sie ist in allen Worker-Kontexten (DedicatedWorker, SharedWorker, ServiceWorker) über self.navigator.platform bzw. kurz navigator.platform verfügbar und gibt einen String wie "Win32", "MacIntel", "Linux x86_64" oder "iPhone" zurück. Kann der Browser die Plattform nicht bestimmen, ist der Wert ein leerer String.

Praktisch nutzt man die Eigenschaft vor allem für einfache, nicht sicherheitsrelevante Anpassungen, etwa zum Protokollieren von Diagnosedaten oder zur Auswahl plattformtypischer Tastenkürzel (⌘ vs. Strg), wenn diese Logik in einem Worker läuft.

Der Wert ist nicht zuverlässig: Browser können ihn einfrieren, verallgemeinern oder vom Nutzer manipulieren lassen. Für ernsthafte Feature-Entscheidungen sollte man stattdessen Feature Detection verwenden oder – wo unterstützt – navigator.userAgentData (User-Agent Client Hints).

Rückgabewert

Typ
string
Beschreibung
Ein String zur Plattformkennung, z. B. "Win32", "MacIntel", "Linux x86_64"; leerer String, wenn unbekannt. Schreibgeschützt.

Beispiele

Plattform im Worker auslesen und an den Hauptthread melden

// worker.js
self.postMessage({ platform: navigator.platform });

// main.js
const worker = new Worker('worker.js');
worker.addEventListener('message', (event) => {
  console.log('Worker-Plattform:', event.data.platform);
});
Worker-Plattform: MacIntel

Plattformtypisches Tastenkürzel-Label im Worker ermitteln

// worker.js
const isMac = /^Mac|iPhone|iPad/.test(navigator.platform);
const modifier = isMac ? '⌘' : 'Strg';

self.addEventListener('message', ({ data }) => {
  if (data === 'getShortcutLabel') {
    self.postMessage(`${modifier}+S zum Speichern`);
  }
});
Strg+S zum Speichern

Diagnosedaten mit Fallback auf userAgentData

// sw.js (Service Worker)
const getPlatform = async () => {
  if (navigator.userAgentData) {
    const { platform } = await navigator.userAgentData.getHighEntropyValues(['platform']);
    return platform;
  }
  return navigator.platform || 'unbekannt';
};

self.addEventListener('activate', (event) => {
  event.waitUntil(getPlatform().then((p) => console.log('SW aktiv auf:', p)));
});
SW aktiv auf: Windows

// Wichtig · Fallstricke

  • Nicht vertrauenswürdig: Der Wert lässt sich per Browsereinstellung, Erweiterung oder DevTools fälschen. Niemals für Sicherheits- oder Zugriffsentscheidungen verwenden.
  • Eingefrorene Werte: Browser reduzieren aus Datenschutzgründen (Fingerprinting) zunehmend die Aussagekraft. Z. B. meldet ein 64-Bit-Windows weiterhin "Win32", Apple-Silicon-Macs melden "MacIntel", iPadOS kann sich als "MacIntel" ausgeben.
  • Nicht standardisierte Werte: Die möglichen Strings sind nicht festgelegt und unterscheiden sich zwischen Browsern und Versionen – Vergleiche daher am besten mit regulären Ausdrücken statt exakter Gleichheit.
  • Kompatibilität: In allen modernen Browsern in Worker-Kontexten verfügbar. Als Alternative empfiehlt sich navigator.userAgentData.platform (derzeit nur Chromium-basierte Browser, sicherer Kontext erforderlich).
  • Bevorzugt immer Feature Detection ('OffscreenCanvas' in self o. Ä.) statt Plattform-Erkennung.