SanitizerConfig

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

HTML Sanitizer API 中的 SanitizerConfig 字典表示一個 sanitizer 配置物件。此配置指定了在將 HTML 字串插入 ElementShadowRoot 時,或在將 HTML 字串解析為 Document 時,允許或應移除哪些元素、屬性和註釋。

此型別的一個例項可以傳遞給 Sanitizer() 建構函式來配置一個 Sanitizer,並且是 Sanitizer.get() 返回的結果。當呼叫 sanitization methods 時,它也可以作為 option.sanitizer 引數傳遞。

請注意,在上述方法中,通常會傳遞一個 Sanitizer 例項作為選項,而不是 SanitizerConfig,特別是因為 sanitizer 例項更易於共享和修改,效率更高。

例項屬性

elements

一個數組,指示在清理 HTML 時允許的元素,還可以選擇性地指定其允許或移除的屬性。

每個元素可以按名稱(字串)指定,或者作為一個具有以下屬性的物件指定:

name

一個包含元素名稱的字串。

namespace 可選

一個包含元素名稱空間的字串。預設名稱空間為 "http://www.w3.org/1999/xhtml"

attributes 可選

一個數組,指示在清理 HTML 時允許在此(已允許的)元素上使用的屬性。

每個屬性可以按名稱(字串)指定,或者作為一個具有以下屬性的物件指定:

name

包含屬性名稱的字串。

namespace 可選

一個包含屬性名稱空間的字串,預設為 null

removeAttributes 可選

一個數組,指示在清理 HTML 時要從此(已允許的)元素上移除的屬性。

每個屬性可以按名稱(字串)指定,或者作為一個具有以下屬性的物件指定:

name

包含屬性名稱的字串。

namespace 可選

一個包含屬性名稱空間的字串,預設為 null

removeElements

一個數組,指示在清理 HTML 時要移除的元素。

每個元素可以按名稱(字串)指定,或者作為一個具有以下屬性的物件指定:

name

一個包含元素名稱的字串。

namespace 可選

一個包含元素名稱空間的字串。預設名稱空間為 "http://www.w3.org/1999/xhtml"

replaceWithChildrenElements

一個數組,指示在清理 HTML 時要用其子元素替換的元素。這主要用於去除文字中的樣式(例如,您可以使用此方法將 <b>some text</b> 更改為 some text)。

每個元素可以按名稱(字串)指定,或者作為一個具有以下屬性的物件指定:

name

一個包含元素名稱的字串。

namespace 可選

一個包含元素名稱空間的字串。預設名稱空間為 "http://www.w3.org/1999/xhtml"

attributes

一個數組,指示在清理 HTML 時允許的屬性。

每個屬性可以按名稱(字串)指定,或者作為一個具有以下屬性的物件指定:

name

包含屬性名稱的字串。

namespace 可選

一個包含屬性名稱空間的字串,預設為 null

removeAttributes

一個數組,指示在清理 HTML 時要從元素中移除的屬性。

每個屬性可以按名稱(字串)指定,或者作為一個具有以下屬性的物件指定:

name

包含屬性名稱的字串。

namespace 可選

一個包含屬性名稱空間的字串,預設為 null

comments

如果允許註釋,則為 true;如果應移除註釋,則為 false

dataAttributes

如果允許 data 屬性,則為 true;如果應移除 data 屬性,則為 false

示例

建立一個“允許”配置

本示例展示瞭如何建立一個“允許” sanitizer 配置,並將其傳遞給 Sanitizer() 建構函式。

js
const sanitizer = new Sanitizer({
  elements: ["div", "p", "script"],
  attributes: ["id"],
  replaceWithChildrenElements: ["b"],
  comments: true,
  dataAttributes: false,
});

請注意,您不能在同一個配置中同時指定允許列表和移除列表,否則在將配置傳遞給建構函式或 sanitization 方法時會引發異常。

建立一個“移除”配置

本示例展示瞭如何建立一個“移除” sanitizer 配置,並將其傳遞給 Sanitizer() 建構函式。

js
const sanitizer = new Sanitizer({
  removeElements: ["span", "script"],
  removeAttributes: ["lang", "id"],
  comments: false,
});

請注意,您不能在同一個配置中同時指定允許列表和移除列表,否則在將配置傳遞給建構函式或 sanitization 方法時會引發異常。

規範

規範
HTML Sanitizer API
# dom-sanitizer-get
HTML Sanitizer API
# dom-sanitizer-sanitizer

瀏覽器相容性

api.Sanitizer.get

api.Sanitizer.Sanitizer