0

试图弄清楚如何使用 JavaScript 在整个 HTML 文档中获取受元素影响的字符范围。我只需要 webkit 兼容的代码。

我在想我只是没有在寻找合适的术语?

这是我将使用的示例:

<body>
This is the way we 
<span class="highlight"><img src="image.png" />
search the <span class="heavy">text</span>
</span>, 
search the text, search the text, 
early in the morning!
</body>

如果我通过类高亮获得对跨度的引用......我想知道高亮跨度包含的字符的开始和结束索引,包括它的子跨度中的文本,但当然不是那些是元素声明本身的一部分,例如“<”、“>”或它们之间的任何内容。

4

2 回答 2

2

一种简单的方法是使用DOM Range。这种方法并不完美:偏移量将包括空白文本节点、脚本元素中的文本节点和被 CSS 隐藏的元素中的文本,并且不包括块元素和<br>元素隐含的换行符,但可能足以满足您的要求.

演示:http: //jsfiddle.net/timdown/QhNZ6/

代码:

function getOffsetWithinBodyText(node) {
    var range = document.createRange();
    range.selectNodeContents(document.body);
    range.setEndBefore(node);
    var start = range.toString().length;

    return {
        start: start,
        end: start + node.textContent.length
    };
}
于 2013-01-21T15:30:35.310 回答
-1

如果您只想获取该文本:

document.querySelectorAll(".highlight")[0].innerText
于 2013-01-21T15:36:28.793 回答