在webkit浏览器中(这在IE9或Mozilla中似乎不是问题)当查询clientRects(getClientRects)的范围时,返回的clientrects包含与所选文本对应的文本矩形,但也包含clientrects范围内任何元素的开头。如何确定哪些客户关系属于元素。
例如,假设这个para用我在这里的相同换行符渲染:
<p>This is some text StartSelection in a paragraph
blah blah<span>this is some EndOfSelection blah
more text</span>
</p>
如果我从StartSelection到EndOfSelection中选择,然后从选择中查询范围 - getRangeAt(0)
我会找回这个clientRects数组:
0. rect of 'StartSelection in a paragraph'
1. rect of 'blah blah'
2. rect of 'this is some EndOfSelection blah'
3. rect of 'more text'
4. rect of 'this is some EndOfSelection'
我想要的唯一值是0,1和&amp; 4.矩形2&amp; 3表示选择所跨越的元素的开始标记的内容。
对rects的几何检查将允许我丢弃2&amp; 3,但代码让我觉得有点脆弱,特别是如果我的选择扩展到第三行。无论如何确定没有几何检查的rects的来源,我可以用它来丢弃2&amp; 3?
答案 0 :(得分:0)
据我所知。 Range
的这个功能在所有浏览器中都相对较新,我看过很少有关于它的文章,所以我认为它没有被广泛使用,并且可能存在浏览器错误。例如,这看起来像是一个WebKit错误,因为在我看来,它很快就会违反the part of the CSSOM View spec pertaining to Ranges。