DOM算法系列007-判定给定节点是否为空白节点


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,也是空白符的一种),对于我们提到的其它各种空白符,由于十分不常见,就不再考虑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值