Start · Sprachen · JavaScript · Referenz · Navigator.vendor

Navigator.vendor

Eigenschaft

Schreibgeschützte Zeichenkette mit dem Browser-Hersteller: <code>"Google Inc."</code>, <code>"Apple Computer, Inc."</code> oder in Firefox der leere String.

seit JavaScript Baseline: alle Browser (veraltet, nur zur Kompatib Kategorie: webapi

Signatur

Navigator.vendor

Beschreibung

Die Eigenschaft navigator.vendor gibt eine schreibgeschützte Zeichenkette zurück, die den Hersteller des Browsers nennen soll. In der Praxis gibt es nur noch drei mögliche Werte: "Google Inc." in Chromium-basierten Browsern (Chrome, Edge, Opera, Brave, Vivaldi), "Apple Computer, Inc." in Safari und allen Browsern unter iOS/iPadOS (die WebKit nutzen müssen) sowie "" (leerer String) in Firefox.

Laut HTML-Spezifikation ist die Eigenschaft Teil des Mixins NavigatorID und existiert nur noch, damit alte Webseiten funktionieren. Der Wert ist absichtlich festgelegt und sagt deshalb nur wenig aus. Microsoft Edge meldet zum Beispiel "Google Inc.", weil es auf Chromium aufbaut.

Für neuen Code solltest du vendor nicht zur Browser-Erkennung verwenden. Prüfe stattdessen, ob eine Funktion vorhanden ist (Feature Detection), zum Beispiel mit 'share' in navigator oder CSS.supports(). Nützlich ist vendor höchstens in Diagnose- und Protokolldaten oder als grobe Einordnung der Rendering-Engine.

Rückgabewert

Typ
string
Beschreibung
"Google Inc.", "Apple Computer, Inc." oder "" (Firefox). Die Eigenschaft ist schreibgeschützt.

Beispiele

Hersteller auslesen

const vendor = navigator.vendor;
console.log(`Browser-Hersteller: "${vendor}"`);
Browser-Hersteller: "Google Inc." // z. B. in Chrome/Edge Browser-Hersteller: "" // in Firefox

Grobe Engine-Einordnung für Diagnose-Protokolle

const detectEngine = () => {
  switch (navigator.vendor) {
    case 'Google Inc.':
      return 'Blink (Chromium)';
    case 'Apple Computer, Inc.':
      return 'WebKit';
    case '':
      return 'Gecko (vermutlich Firefox)';
    default:
      return 'unbekannt';
  }
};

const diagnose = {
  engine: detectEngine(),
  sprache: navigator.language,
  zeitpunkt: new Date().toISOString(),
};
console.log(diagnose);
{ engine: 'WebKit', sprache: 'de-DE', zeitpunkt: '2024-05-01T10:00:00.000Z' } // z. B. in Safari

Besser: Feature Detection statt Herstellerprüfung

// Schlecht: Annahme über den Hersteller
const kannTeilenFalsch = navigator.vendor === 'Apple Computer, Inc.';

// Gut: vorhandene Funktion direkt prüfen
const kannTeilen = typeof navigator.share === 'function';

const teilen = async () => {
  if (!kannTeilen) {
    console.log('Web Share API nicht verfügbar – Fallback verwenden');
    return;
  }
  await navigator.share({ title: 'programmierung.net', url: location.href });
};

teilen();
Web Share API nicht verfügbar – Fallback verwenden // z. B. in Firefox auf dem Desktop

// Wichtig · Fallstricke

  • Veraltet: Die Eigenschaft gibt es nur noch aus Kompatibilitätsgründen. Ihr Wert ist in der Spezifikation festgelegt und eignet sich nicht, um einzelne Browser eindeutig zu erkennen.
  • Chromium-Ableger: Edge, Opera, Brave, Samsung Internet und andere melden alle "Google Inc.". So lassen sie sich nicht von Chrome unterscheiden.
  • iOS: Chrome, Firefox und Edge unter iOS nutzen WebKit und melden deshalb in der Regel "Apple Computer, Inc.".
  • Firefox gibt immer den leeren String zurück. Ein Test wie if (navigator.vendor) ist dort also false.
  • Der Wert lässt sich durch Browser-Erweiterungen, Entwicklerwerkzeuge oder Automatisierungswerkzeuge (z. B. Puppeteer) fälschen. Für Sicherheitsentscheidungen ist er deshalb ungeeignet.
  • Auch in Web Workern ist die Eigenschaft über WorkerNavigator verfügbar (self.navigator.vendor).
  • Die zugehörige Eigenschaft navigator.vendorSub ist immer der leere String.