Signatur
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
"Google Inc.", "Apple Computer, Inc." oder "" (Firefox). Die Eigenschaft ist schreibgeschützt.Beispiele
Hersteller auslesen
const vendor = navigator.vendor;
console.log(`Browser-Hersteller: "${vendor}"`);
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);
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();
// 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 alsofalse. - 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
WorkerNavigatorverfügbar (self.navigator.vendor). - Die zugehörige Eigenschaft
navigator.vendorSubist immer der leere String.