Signatur
Beschreibung
navigator.buildID gibt einen String mit der Build-Kennung des Browsers zurück. Das ist ein Zeitstempel im Format YYYYMMDDHHMMSS, etwa "20181001000000". Ursprünglich stand er für den genauen Zeitpunkt, zu dem die jeweilige Firefox-Version kompiliert wurde.
Die Eigenschaft gehört zu keinem Standard und wird nur von Firefox unterstützt. In Chrome, Edge, Safari und anderen Browsern ist der Wert undefined. Seit Firefox 64 bekommen normale Webseiten aus Datenschutzgründen immer denselben festen Wert "20181001000000". Damit lassen sich Nutzer nicht mehr über die genaue Build-Version wiedererkennen (Schutz vor Fingerprinting). Nur privilegierter Code, zum Beispiel interner Browser-Code, bekommt noch die echte Kennung.
Für echte Webanwendungen ist die Eigenschaft deshalb praktisch nutzlos. Man sollte sie weder zur Browser-Erkennung noch zur Versionsprüfung verwenden. Besser ist es, gezielt zu prüfen, ob eine Funktion vorhanden ist (Feature Detection), etwa mit 'fetch' in window. Wenn man wirklich Browser-Informationen braucht, sind navigator.userAgentData (wo verfügbar) oder navigator.userAgent die bessere Wahl.
Rückgabewert
YYYYMMDDHHMMSS. Webseiten bekommen in Firefox 64 und neuer immer "20181001000000". In Browsern, die die Eigenschaft nicht kennen, ist der Wert undefined.Beispiele
Build-Kennung auslesen und Verfügbarkeit prüfen
// Prüfen, ob die Eigenschaft existiert (nur Firefox)
if ('buildID' in navigator) {
console.log(`Build-ID: ${navigator.buildID}`);
} else {
console.log('navigator.buildID wird nicht unterstützt');
}
Build-ID in ein Date-Objekt umwandeln
const parseBuildID = (id) => {
const match = /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/.exec(id ?? '');
if (!match) return null;
const [, y, mo, d, h, mi, s] = match.map(Number);
return new Date(Date.UTC(y, mo - 1, d, h, mi, s));
};
const buildDate = parseBuildID(navigator.buildID);
console.log(buildDate ? buildDate.toISOString() : 'Keine Build-ID verfügbar');
Diagnose-Daten mit Fallback für ein Fehler-Log sammeln
const collectDiagnostics = () => ({
userAgent: navigator.userAgent,
language: navigator.language,
// Nur als Zusatzinfo – nie für Browser-Weichen verwenden
buildID: navigator.buildID ?? 'n/a',
timestamp: new Date().toISOString()
});
console.log(collectDiagnostics());
// Wichtig · Fallstricke
- Nicht standardisiert: Die Eigenschaft gibt es nur in Firefox. Chromium-Browser und Safari geben
undefinedzurück. Im Produktivcode sollte man sich nicht darauf verlassen. - Fester Wert seit Firefox 64: Webseiten bekommen zum Schutz vor Fingerprinting immer
"20181001000000". Der Wert sagt also nichts über die tatsächliche Version oder das Build-Datum aus. - Keine Browser-Erkennung: Nicht verwenden, um Browser oder Versionen zu unterscheiden. Stattdessen gezielt prüfen, ob eine Funktion vorhanden ist (Feature Detection).
- Die Eigenschaft ist nur lesbar. Eine Zuweisung wird stillschweigend ignoriert, im Strict Mode kann sie je nach Umgebung einen
TypeErrorauslösen. - Wenn man den Wert trotzdem auswertet, immer mit
undefinedrechnen und zum Beispiel mit??absichern.