UID: 20221220141216
aliases:
tags:
source:
cssclass:
created: 2022-12-20
空白节点
什么是空白节点?
当一个节点的节点值为空文本值时,这个节点就是空白节点。
节点值: 即节点的 nodeValue
属性值:
实际上,节点值有内容的节点类型,除去CDATA类型和注释节点以及ProcessingInstruction类型外,就只剩下文本节点了,其它节点的给属性值统统为null.
所以,我们最终判断的就只是一个文本节点的节点值是否为空文本值。
空文本值
什么是空文本值?
空文本值并不是说什么字符都没有,而是只包含有那些不可见的控制字符(参见正则表达式中的空白符详细解释),比如:
- 空格(有很多种,比如零宽空格,发宽空格,不间断空格等等)(
\s
) - 回车符(
\r
) - 换行符(
\n
) - 制表符(
\t
) - 等等…
实现
由于空文本值所包含的不可见字符种类很多,所以我们最好的选择是借助正则表达式和JS的test
方法来判断。
isWhitespace:function (node) {
return !new RegExp('[^ \t\n\r\u200B]').test(node.nodeValue);
}
关于其中正则的含义:
它旨在匹配所有的空格、制表符、换行符、回车符以及零宽间隔符号(u+200
,也是空白符的一种),对于我们提到的其它各种空白符,由于十分不常见,就不再考虑。