Signatur
Beschreibung
trustedTypes.emptyScript gibt ein fertiges TrustedScript-Objekt zurück, dessen Inhalt die leere Zeichenfolge "" ist. Ist per Content Security Policy require-trusted-types-for 'script' aktiv, nehmen Skript-Senken wie HTMLScriptElement.text, textContent eines <script>-Elements oder eval() nur noch TrustedScript-Werte an. Normale Zeichenketten werden dann abgelehnt.
Mit dieser Eigenschaft kann man eine solche Senke leeren oder zurücksetzen, ohne dafür eine eigene Richtlinie mit trustedTypes.createPolicy() anzulegen. Eine leere Zeichenkette kann keinen Code ausführen und ist deshalb immer unbedenklich. Das spart Richtliniennamen, die über die CSP-Direktive trusted-types ausdrücklich erlaubt werden müssten.
Außerdem dient emptyScript zur Funktionserkennung. In Browsern ohne native Trusted-Types-Unterstützung liefert ein Polyfill hier oft nur eine normale Zeichenkette. Mit trustedTypes.isScript(trustedTypes.emptyScript) lässt sich also prüfen, ob die Umgebung Trusted Types wirklich durchsetzt.
Rückgabewert
TrustedScript-Objekt, dessen toString() bzw. toJSON() die leere Zeichenfolge "" zurückgibt.Beispiele
Inhalt eines Script-Elements unter CSP zurücksetzen
// CSP: require-trusted-types-for 'script'
const script = document.querySelector('#inline-config');
// script.text = ''; // würde einen TypeError auslösen
script.text = trustedTypes.emptyScript; // erlaubt, ohne eigene Richtlinie
console.log(script.text === '');
Echte Trusted-Types-Unterstützung erkennen
const hasNativeTrustedTypes = () =>
typeof window.trustedTypes !== 'undefined' &&
trustedTypes.isScript(trustedTypes.emptyScript);
console.log(hasNativeTrustedTypes() ? 'Trusted Types aktiv' : 'Keine native Unterstützung');
Typ und Wert untersuchen
const empty = trustedTypes.emptyScript;
console.log(empty instanceof TrustedScript); // true
console.log(empty.toString().length); // 0
console.log(JSON.stringify({ code: empty })); // {"code":""}
Fallback für Browser ohne Trusted Types
// Liefert ein sicheres leeres Skript, egal ob die API existiert
const emptyScript = window.trustedTypes?.emptyScript ?? '';
const el = document.createElement('script');
el.text = emptyScript;
document.head.append(el);
// Wichtig · Fallstricke
- Browser-Kompatibilität: Trusted Types gibt es in Chromium-Browsern (Chrome, Edge, Opera) seit Version 83. Andere Browser haben erst deutlich später nachgezogen.
window.trustedTypeskann daherundefinedsein: vorher prüfen oder optionale Verkettung (?.) nutzen. - Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird ignoriert, im Strict Mode löst sie einen
TypeErroraus. - Sie liefert ausschließlich ein leeres Skript. Für echten Skriptinhalt braucht man weiterhin eine Richtlinie mit
createScript-Funktion. - Für Skript-URLs gibt es kein Gegenstück. Das HTML-Pendant ist
trustedTypes.emptyHTML. - In Workern ist die Fabrik über
self.trustedTypeserreichbar.