Start · Sprachen · JavaScript · Referenz · Navigator.taintEnabled()

Navigator.taintEnabled()

Methode

Veraltete Methode aus der Netscape-Zeit, die angab, ob „Data Tainting“ aktiv ist. Wo sie noch existiert, gibt sie immer <code>false</code> zurück.

seit JavaScript Veraltet, nicht standardisiert – in aktuellen Brow Kategorie: webapi

Signatur

Navigator.prototype.taintEnabled()

Beschreibung

navigator.taintEnabled() stammt aus JavaScript 1.1/1.2 (Netscape Navigator 3). Damals gab es ein Sicherheitsmodell namens Data Tainting: Daten aus fremden Quellen wurden „markiert“, damit Skripte sie nicht unbemerkt an andere Domains weitergeben konnten. Über taintEnabled() ließ sich prüfen, ob dieses Modell aktiv war.

Data Tainting wurde schon früh verworfen und durch die Same-Origin-Policy ersetzt, später ergänzt durch CORS und die Content Security Policy. Die Methode blieb nur noch aus Kompatibilitätsgründen erhalten und gab immer false zurück. In den meisten aktuellen Browsern gibt es sie gar nicht mehr, sodass ein Aufruf einen TypeError auslöst.

In neuem Code gibt es für taintEnabled() keine sinnvolle Verwendung. Relevant ist sie nur, wenn du alten Code wartest oder verstehen willst, warum ältere Bibliotheken (z. B. frühe MooTools-Versionen) sie zur Browsererkennung abgefragt haben.

Rückgabewert

Typ
boolean
Beschreibung
Immer false, sofern die Methode überhaupt vorhanden ist. Ist sie nicht vorhanden, liefert navigator.taintEnabled den Wert undefined, und ein Aufruf wirft einen TypeError.

Beispiele

Sicherer Aufruf mit Existenzprüfung

// Erst prüfen, ob die Methode überhaupt existiert
const tainting = typeof navigator.taintEnabled === 'function'
  ? navigator.taintEnabled()
  : false;

console.log(`Data Tainting aktiv: ${tainting}`);
Data Tainting aktiv: false

Fehler beim direkten Aufruf in modernen Browsern

try {
  console.log(navigator.taintEnabled());
} catch (err) {
  // In Chrome, Edge und aktuellem Firefox fehlt die Methode
  console.warn('Nicht unterstützt:', err.name);
}
Nicht unterstützt: TypeError

Alten Code zur Browsererkennung ablösen

// ALT (z. B. frühe MooTools-Versionen): Browsersniffing über taintEnabled
// const isWebKit = !navigator.taintEnabled;

// NEU: gezielt prüfen, ob eine Funktion vorhanden ist, statt den Browser zu erraten
const supportsClipboard = 'clipboard' in navigator &&
  typeof navigator.clipboard.writeText === 'function';

console.log(`Clipboard-API verfügbar: ${supportsClipboard}`);
Clipboard-API verfügbar: true

// Wichtig · Fallstricke

  • Veraltet und nicht standardisiert: Die Methode steht in keiner aktuellen Spezifikation. Nutze sie in neuem Code nicht.
  • Kompatibilität: In den meisten aktuellen Browsern ist die Methode entfernt. Ein direkter Aufruf wirft dort einen TypeError: navigator.taintEnabled is not a function. Wenn du sie in Altcode aufrufen musst, prüfe vorher mit typeof.
  • Fallstrick Browsersniffing: Alte Bibliotheken schlossen aus dem Fehlen von taintEnabled auf einen bestimmten Browser (z. B. WebKit). Seit die Methode überall verschwindet, funktioniert diese Erkennung nicht mehr. Ersetze sie durch Funktionserkennung (Feature Detection).
  • Sicherheit: Der Rückgabewert sagt nichts über die tatsächlichen Sicherheitsmechanismen des Browsers aus. Den Schutz über Ursprungsgrenzen hinweg übernehmen heute die Same-Origin-Policy, CORS und die Content Security Policy.