我们假设我像这样读取文本节点的内容:
s = current_node.getSelection().anchorNode.nodeValue;
由于这个节点,计算网页上显示的字符数的最佳方法是什么?我知道例如
将显示为文字字符串,因此无需查找这些字符串。我需要做的就是将一行中的几个空格计为一个字符吗?还有什么我需要注意的吗?
答案 0 :(得分:3)
您可以向浏览器询问节点中文本版本的内容,如下所示:
var node = current_node.getSelection().anchorNode;
var text = node.textContent || node.innerText;
var length = text.length;
这已经将实体转换为常规字符,并且不包含任何HTML标记。多个空格将作为多个空格出现 - 这就是浏览器中此功能的工作原理。如果您非常确定HTML中没有多个
序列,您可以像这样折叠多个空格:
var node = current_node.getSelection().anchorNode;
var text = node.textContent || node.innerText;
text = text.replace(/ +/g, " ");
var length = text.length;
答案 1 :(得分:0)
这取决于你用什么字面意思来定义“在网页上显示”。如果字符溢出具有overflow:hidden的容器,它们将不会显示在网页上(由于它们被CSS规则隐藏)。
除此之外,缩小一系列空白区域,忽略转义换行符和回车符(如果适用,如< pre>< / pre>),以及缩小转义字符应该是您所需要的。至少我无法想到任何其他边缘情况。