如何获取范围的可见文本? (createRange)

时间:2014-01-23 12:47:22

标签: javascript dom range

.toString()在由document.createRange(...)创建的范围上返回的字符串将包含诸如脚本内部部分和样式标记之类的内容。 (至少使用当前版本的Chrome。)

有没有办法获得可见的文字?

1 个答案:

答案 0 :(得分:1)

我找到了一个似乎合理并且至少符合暂定标准的解决方案。 (我的猜测是,在没有检查的情况下,标准可能无法处理此类案例中的所有细节,但Chrome中的当前实现似乎很有用,可能会成为标准。)

解决方案只是首先从以下范围创建文档片段:

    var fragment = r.cloneContents();

然后沿着你在DOM中走一棵子树的方式走片段。不要输入“SCRIPT”和“STYLE”之类的节点。收集“#text”节点。