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

浏览器兼容性

另见