Document: parseHTML() 靜態方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

Document 物件的 parseHTML() 靜態方法提供了一種 XSS 安全的方法來解析和清理 HTML 字串,從而建立一個新的 Document 例項。

語法

js
Document.parseHTML(input)
Document.parseHTML(input, options)

引數

input

定義要清理並注入到 Shadow Root 中的 HTML 字串。

options 可選

一個包含以下可選引數的 options 物件

sanitizer

一個 SanitizerSanitizerConfig 物件,它定義了輸入中允許或刪除的元素,或者是字串 "default",用於預設的清理器配置。請注意,如果配置需要重複使用,通常 "Sanitizer"SanitizerConfig 更高效。如果未指定,則使用 XSS 安全的預設清理器配置。

返回值

一個 Document

異常

TypeError

如果 options.sanitizer 傳遞了以下內容,則丟擲此錯誤

描述

parseHTML() 方法解析並清理 HTML 字串,以建立一個 XSS 安全的新 Document 例項。生成的 Document 將具有“text/html”的 內容型別、“UTF-8”的 字元集 和“about:blank”的 URL。

如果在 options.sanitizer 引數中未指定清理器配置,則 parseHTML() 將使用預設的 Sanitizer 配置。此配置允許所有被認為是 XSS 安全的元素和屬性,從而禁止被認為不安全的實體。可以指定自定義清理器或清理器配置,以選擇允許或刪除哪些元素、屬性和註釋。請注意,即使清理器配置允許不安全的選項,使用此方法時仍會將其刪除(該方法隱式呼叫 Sanitizer.removeUnsafe())。

輸入 HTML 可能包含 宣告式 Shadow Root。如果 HTML 字串在特定 Shadow Host 中定義了多個 宣告式 Shadow Root,則只建立第一個 ShadowRoot — 後續宣告將作為該 Shadow Root 中的 <template> 元素進行解析。

除非有特殊需要允許不安全的元素和屬性,否則應使用 parseHTML() 而非 Document.parseHTMLUnsafe()。如果需要解析的 HTML 不包含不安全的 HTML 實體,則應使用 Document.parseHTML()

請注意,由於此方法始終對 XSS 不安全實體的輸入字串進行清理,因此它不受 Trusted Types API 的保護或驗證。

規範

規範
HTML Sanitizer API
# dom-document-parsehtml

瀏覽器相容性

另見