WordPress 的 DOM 工具模块。
安装
安装该模块
npm install @wordpress/dom --save
API
computeCaretRect
获取容器内选区的矩形区域。
参数
- win
Window: 选区所在的窗口。
返回
DOMRect | null: 矩形区域。
documentHasSelection
检查当前文档是否存在选区。这包括输入字段、文本域以及一般富文本选区中的焦点。
参数
- doc
Document: 要检查的文档。
返回
boolean: 如果存在选区则返回 true,否则返回 false。
documentHasTextSelection
检查当前文档是否包含已选中的文本。这适用于文档中的文本范围,不适用于 <input> 和 <textarea> 元素内部的选区。
参见:https://developer.mozilla.org/en-US/docs/Web/API/Window/getSelection#Related_objects。
参数
- doc
Document: 要检查的文档。
返回
boolean: 如果存在选区则返回 true,否则返回 false。
documentHasUncollapsedSelection
检查当前文档是否存在任何形式的(非折叠)选区。这包括跨元素的文本范围以及文本类 <input> 和 <textarea> 元素内的任何选区。
参数
- doc
Document: 要检查的文档。
返回
boolean: 文档中是否存在任何可识别的文本选区。
focus
将 focusable 和 tabbable 工具函数按同名键分组到对象中。
getFilesFromDataTransfer
从 DataTransfer 对象中获取所有文件。
参数
- dataTransfer
DataTransfer: 要检查的 DataTransfer 对象。
返回
File[]: 包含所有文件的数组。
getOffsetParent
返回最近的定位元素,或者在 offsetParent 规范的任一条件下返回 null。与 offsetParent 不同,此函数不限于 HTMLElement,并接受任何 Node(例如 Node.TEXT_NODE)。
相关
参数
- node
Node: 用于查找偏移父节点的节点。
返回
Node | null: 偏移父节点。
getPhrasingContentSchema
获取短语内容可能路径的模式。
相关
参数
- context
[string]: 设置为 “paste” 以排除不可见元素和敏感数据。
返回
Partial<ContentSchema>: 模式。
getRectangleFromRange
获取给定 Range 的矩形区域。如果找不到合适的矩形,则返回 null。请替代使用 Range.getBoundingClientRect(),后者通常存在问题,尤其是对于折叠范围的矩形计算。
参数
- range
Range: 范围。
返回
DOMRect?: 矩形区域。
getScrollContainer
给定一个 DOM 节点,找到最近的滚动容器节点或该节点本身(如果它是可滚动的)。
参数
- node
Element | null: 开始搜索的节点。 - direction
?string: 要搜索的可滚动容器的方向(‘vertical’、‘horizontal’、‘all’)。默认为 ‘vertical’。
返回
Element | undefined: 找到的可滚动容器节点。
insertAfter
给定两个 DOM 节点,将前者作为后者的下一个兄弟节点插入到 DOM 中。
参数
- newNode
Node: 要插入的节点。 - referenceNode
Node: 在其之后执行插入操作的节点。
返回
void:
isEmpty
递归检查元素是否为空。如果元素包含文本或包含带有属性(如图片)的子元素,则不为空。
参数
- element
Element: 要检查的元素。
返回
boolean: 元素是否为空。
isEntirelySelected
检查元素的内容是否已被完全选中。如果不存在选区的可能性,则返回 true。
参数
- element
HTMLElement: 要检查的元素。
返回
boolean: 如果完全选中则返回 true,否则返回 false。
isFormElement
检测元素是否为表单元素。
参数
- element
Element: 要检查的元素。
返回
boolean: 如果是表单元素则返回 true,否则返回 false。
isHorizontalEdge
检查选区是否在容器的水平边缘处。
参数
- container
HTMLElement: 可聚焦元素。 - isReverse
boolean: 设置为 true 检查左侧,false 检查右侧。
返回
boolean: 如果在水平边缘则返回 true,否则返回 false。
isNumberInput
检查给定元素是否为 number 类型的输入字段。
参数
- node
Node: HTML 节点。
返回
node is HTMLInputElement: 如果节点是数字输入则返回 true。
isPhrasingContent
确定给定节点是否为短语内容。
相关
参数
- node
Node: 要测试的节点。
返回
boolean: 如果是短语内容则返回 true,否则返回 false。
isRTL
判断元素的文本方向是否为从右到左。
参数
- element
Element: 要检查的元素。
返回
boolean: 如果是 RTL 则返回 true,LTR 则返回 false。
isSelectionForward
如果给定的选区对象是正向方向,则返回 true,否则返回 false。
相关
参数
- selection
Selection: 要检查的选区对象。
返回
boolean: 选区是否为正向。
isTextContent
参数
- node
Node:
返回
boolean: 节点是否为文本内容
isTextField
检查给定元素是否为文本字段,其中文本字段的定义是能够在输入中选择文本,或者它是 contenteditable。
参见:https://html.spec.whatwg.org/#textFieldSelection
参数
- node
Node: HTML 元素。
返回
node is HTMLElement: 如果元素是文本字段则返回 true,否则返回 false。
isVerticalEdge
检查选区是否在容器的垂直边缘处。
参数
- container
HTMLElement: 可聚焦元素。 - isReverse
boolean: 设置为 true 检查顶部,false 检查底部。
返回
boolean: 如果在垂直边缘则返回 true,否则返回 false。
placeCaretAtHorizontalEdge
将光标放置在给定元素的开头或结尾。
参数
- container
HTMLElement: 可聚焦元素。 - isReverse
boolean: 为 end 时设为 true,为 start 时设为 false。
placeCaretAtVerticalEdge
将光标放置在给定元素的顶部或底部。
参数
- container
HTMLElement: 可聚焦元素。 - isReverse
boolean: 为 bottom 时设为 true,为 top 时设为 false。 - rect
[DOMRect]: 用于定位光标的矩形区域。
remove
给定一个 DOM 节点,将其从 DOM 中移除。
参数
- node
Node: 要移除的节点。
返回
void:
removeInvalidHTML
给定一个模式,清理 HTML 中的节点、属性和类。
参数
- HTML
string: 需要清理的 HTML。 - schema
import('./clean-node-list').Schema: HTML 的模式。 - inline
boolean: 是否针对内联模式进行清理。
返回
string: 清理后的 HTML。
replace
给定两个 DOM 节点,在 DOM 中将前者替换为后者。
参数
- processedNode
Element: 要被移除的节点。 - newNode
Element: 要插入以替代前者的节点。
返回
void:
replaceTag
将给定的节点替换为具有给定标签名的新节点。
参数
- node
Element: 要替换的节点 - tagName
string: 新的标签名。
返回
Element: 新节点。
safeHTML
从 HTML 中剥离脚本和 on* 属性。
参数
- html
string: 需要清理的 HTML。
返回
string: 清理后的 HTML。
unwrap
展开给定的节点。这意味着任何子节点都会被移动到父节点处。
参数
- node
Node: 要展开的节点。
返回
void:
wrap
使用具有给定标签名的新节点包裹给定的节点。
参数
- newNode
Element: 要插入的节点。 - referenceNode
Element: 要被包裹的节点。
为此包做出贡献
这是 Gutenberg 项目的一部分,是一个独立的包。该项目组织为一个单体仓库(monorepo)。它由多个自包含的软件包组成,每个包都有特定的用途。此单体仓库中的包发布到 npm,并被 WordPress 以及其他软件项目使用。
要了解有关为此包或整个 Gutenberg 做出贡献的更多信息,请阅读项目的主要 贡献者指南。