处理selection()range()和DOM以获取div中的文本索引

时间:2013-08-06 06:45:32

标签: javascript html dom

我正在尝试组合一个java脚本,当用户选择特定div id中的某些文本时,将返回该选择的开始和结束索引,忽略内部html标记。

考虑以下示例:

<p>Some text that will be ignored</p>
<div id="X">
    <p>Here is some text that should be considered</p>
    <p>Here is a bit more <span>tex</span>t in a separate paragraph but the same div id</p>
</div>

现在,如果我突出显示be considered. Here is并使用

var currentRange = window.getSelection().getRangeAt(0);

console.log('startContainer\t'+currentRange.startContainer);
console.log('startOffset\t'+currentRange.startOffset);
console.log('endContainer\t'+currentRange.endContainer);
console.log('endOffset\t'+currentRange.endOffset);
console.log('textLength\t'+currentRange.toString().length);
console.log('text\t'+currentRange.toString())

我得到startOffset:29和endOffset:4。

我的问题:

使用Range()对象时,是否可以跟踪我所在的<p>标记?我最终会在这个div标签中有更多的html元素,但是希望能够获得选择的索引范围,就好像它都是一个字符串一样,忽略了里面的所有html元素。

感谢您的帮助!

0 个答案:

没有答案