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

瀏覽器相容性