TrustedHTML:toJSON() 方法
>备注: 此特性在 Web Worker 中可用。
TrustedHTML 接口的 toJSON() 方法返回一个表示 TrustedHTML 对象的字符串。这与 TrustedHTML.toString() 返回的字符串相同。
在 JSON 序列化过程中遇到 TrustedHTML 对象时,JSON.stringify() 会自动调用此方法。序列化后的值随后可以在 JSON.parse() 的 reviver 函数中使用 TrustedTypePolicy.createHTML() 方法转换回来,这会再次对其运行策略的转换函数。
语法
js
toJSON()
参数
无。
返回值
一个字符串。
示例
>直接调用 toJSON()
此示例创建了一个 TrustedHTML 对象。直接调用 toJSON() 会返回其存储的字符串值。
js
const escapeHTMLPolicy = trustedTypes.createPolicy("myEscapePolicy", {
createHTML: (string) => string.replace(/</g, "<"),
});
const escaped = escapeHTMLPolicy.createHTML("<img src=x onerror=alert(1)>");
const json = escaped.toJSON();
console.log(json); // 与 escaped.toString() 的值相同
console.log(typeof json); // "string"
序列化为 JSON 字符串
上一个示例中的 TrustedHTML 对象使用 JSON.stringify() 进行序列化,它会自动调用 toJSON() 方法。
js
console.log(JSON.stringify(escaped));
这会输出以下 JSON 字符串,其中包含外围的双引号(属于字符串内容的一部分):
json
"<img src=x onerror=alert(1)>"
规范
| 规范 |
|---|
| Trusted Types> # dom-trustedhtml-tojson> |