TrustedTypePolicyFactory: createPolicy() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

注意:此功能在 Web Workers 中可用。

TrustedTypePolicyFactory 接口的 createPolicy() 方法创建一个 TrustedTypePolicy 对象,该对象实现了作为 policyOptions 传入的规则。

语法

js
createPolicy(policyName, policyOptions)

参数

policyName

一个包含策略名称的字符串。

policyOptions 可选

用于将字符串转换为受信任值的用户定义函数。

createHTML(input[,args])

一个字符串形式的回调函数,其中包含在创建 TrustedHTML 对象时要运行的代码。

createScript(input[,args])

一个字符串形式的回调函数,其中包含在创建 TrustedScript 对象时要运行的代码。

createScriptURL(input[,args])

一个字符串形式的回调函数,其中包含在创建 TrustedScriptURL 对象时要运行的代码。

返回值

一个 TrustedTypePolicy 对象。

异常

TypeError

如果策略名称被 Content Security Policy trusted-types 指令 限制,并且此名称不在允许列表中,则会抛出此异常。

TypeError

如果名称重复,并且 Content Security Policy trusted-types 指令 未使用 allow-duplicates,则会抛出此异常。

示例

为 HTML 接收器创建策略

以下代码创建一个名为 "myEscapePolicy" 的策略,并为 createHTML() 定义了一个用于清理 HTML 的函数。

js
const escapeHTMLPolicy = trustedTypes.createPolicy("myEscapePolicy", {
  createHTML: (string) => string.replace(/</g, "&lt;"),
});

创建默认策略

在一个通过 Content Security Policy 和 require-trusted-types-for 指令设置为 script 的策略强制执行 Trusted Types 的网站上,任何接受脚本的注入脚本都期望一个 Trusted Type 对象。如果插入的是字符串,则会使用 默认策略

默认策略会在控制台记录一条消息,提醒开发者重构应用程序的这部分,以使用 Trusted Type 对象。它还会将默认策略的使用、类型和注入接收器的详细信息附加到返回值中。

js
trustedTypes.createPolicy("default", {
  createScriptURL(s, type, sink) {
    console.log("Please refactor.");
    return `${s}?default-policy-used&type=${encodeURIComponent(
      type,
    )}&sink=${encodeURIComponent(sink)}`;
  },
});

规范

规范
Trusted Types
# dom-trustedtypepolicyfactory-createpolicy

浏览器兼容性