v145 · Web APIs · Trusted Types Demo
Trusted Types Demo
Creates a Trusted Types policy, generates typed values, and assigns them to DOM sinks — showing both successful assignments and what happens when an unsafe value is rejected.
This page does not use the
require-trusted-types-for CSP header, so raw strings still reach sinks. Trusted Types is demonstrated in "permissive" (reporting) mode. In a production app you would add Content-Security-Policy: require-trusted-types-for 'script' to enforce it.
API support
trustedTypes API—
trustedTypes.createPolicy—
TrustedHTML created—
innerHTML assignment—
output element
Click “Run Trusted Types demo”.
code
// Create a Trusted Types policy (Chrome 145+ spec-aligned)
const policy = trustedTypes.createPolicy('demo-policy', {
createHTML: (input) => {
// Only allow bold tags (minimal allowlist for demo)
return input.replace(/<(?!\/?(b|em|strong)\b)[^>]+>/gi, '');
},
});
// Create a TrustedHTML value
const safeHtml = policy.createHTML('Hello <b>world</b>');
console.log(safeHtml instanceof TrustedHTML); // true
// Assign to innerHTML — safe because it's a TrustedHTML
document.getElementById('output').innerHTML = safeHtml;
// Assigning a raw string when enforcement is active would throw:
// TypeError: This assignment requires a 'TrustedHTML' object.
// document.getElementById('output').innerHTML = '<b>raw string</b>';