【问题标题】:Javascript DOM, get node text without losing spacing infoJavascript DOM,获取节点文本而不丢失间距信息
【发布时间】:2012-03-26 00:43:03
【问题描述】:

我正在使用 javascript 并希望遍历 HTML 树,获取用户看到的所有文本。但是,我丢失了间距信息。

假设我有两个文档:

<html>XXX<p>YY    YY</p><html>

<html>XXX<p>YY&nbsp;&nbsp;&nbsp;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


【解决方案1】:

如果你用 charCode 测试呢?我相信常规空间是32,而&amp;nbsp;160

【讨论】:

  • 你是对的!我测试了它并且它有效。所以信息并没有真正丢失。只是,在我看来,它们都显示为空格。知道了这一点,我可能还可以找到其他方法来获取信息(例如,在我的 python 代码中,在表单中发送信息之后)。现在我还需要考虑我还需要进行哪些其他转换。我想所有的 html 实体等等。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-21
  • 2017-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
相关资源
最近更新 更多