如何计算文本节点中实际显示的字符数?

时间:2012-01-26 02:06:03

标签: javascript html dom

我们假设我像这样读取文本节点的内容:

s = current_node.getSelection().anchorNode.nodeValue;

由于这个节点,计算网页上显示的字符数的最佳方法是什么?我知道例如 将显示为文字字符串,因此无需查找这些字符串。我需要做的就是将一行中的几个空格计为一个字符吗?还有什么我需要注意的吗?

2 个答案:

答案 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;

此处示例:http://jsfiddle.net/jfriend00/FpsGq/

答案 1 :(得分:0)

这取决于你用什么字面意思来定义“在网页上显示”。如果字符溢出具有overflow:hidden的容器,它们将不会显示在网页上(由于它们被CSS规则隐藏)。

除此之外,缩小一系列空白区域,忽略转义换行符和回车符(如果适用,如< pre>< / pre>),以及缩小转义字符应该是您所需要的。至少我无法想到任何其他边缘情况。