【发布时间】:2012-03-26 00:43:03
【问题描述】:
我正在使用 javascript 并希望遍历 HTML 树,获取用户看到的所有文本。但是,我丢失了间距信息。
假设我有两个文档:
<html>XXX<p>YY YY</p><html>
<html>XXX<p>YY YY</p><html>
第一个将出现,在 Y 之间有 1 个空格。第二个将有 3 个空格。但是,如果我遍历树,并且对于每个 #text 节点,使用:
text = node.nodeValue;
那么两个节点的文本将有 3 个空格。我不再知道哪个有“真正的”nbsp 空间。我可以将 node.innerHTML 用于 p 元素,这将显示 nbsp,但我认为我不能使用 innerHTML 来仅获取 XXX 文本(没有某种文本减法)。
我可以获取整个文档的 innerHTML 并对其进行解析。但是,我还需要获取每个元素的计算样式,我将使用
window.getComputedStyle(theElement).getPropertyValue("text-align");
所以,我将遍历每个节点。此外,innerHTML 会按原样显示源代码,同时遍历节点“修复”html 错误、添加结束标记等。这是一件好事,我想保留。
【问题讨论】:
-
有趣的问题。能否展示一下你当前的遍历代码以供参考?
-
我创建了一个递归调用的函数。该函数获取元素的nodeName,如果它是#text 元素,则获取nodeValue。对于每个子节点(element.childNodes),它调用函数,返回名称和值信息。
标签: javascript dom