Signatur
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
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}`);
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);
}
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}`);
// 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 mittypeof. - Fallstrick Browsersniffing: Alte Bibliotheken schlossen aus dem Fehlen von
taintEnabledauf 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.