在查询clientRects(getClientRects)的范围时,在webkit浏览器(在IE9或Mozilla中这似乎不是问题),返回的clientrects包含对应文本的矩形到选定的文本,还包括范围内任何元素的开始的客户端反馈。我如何确定哪些客户端产品属于这些元素。webkit浏览器中来自getClientRects的clientRect的语义
比如让说,这对用相同的换行符渲染我这里有:
<p>This is some text StartSelection in a paragraph
blah blah<span>this is some EndOfSelection blah
more text</span>
</p>
如果我选择从StartSelection到EndOfSelection,然后查询从选择范围 - (0)
getRangeAt我还是会回到这个数组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'
唯一rects我想是0,1,& 4 Rects 2 & 3代表选择交叉元素的开始标记的内容。
对矩形的几何检查可以让我放弃2 & 3,但是代码让我觉得有点脆弱,特别是如果我的选择延伸到第三条线的话。无论如何确定没有几何检查的矩形的来源,我可以用它来丢弃2 & 3?
出于好奇,你想用'getClientRects()'实现什么? –
我试图突出显示文本,与文本选择分开。如果我可以在选择中抽取多个范围,我可以忍受这一点,但似乎支持有限。 – freddylindstrom
为什么不走Range的DOM或使用'document.execCommand()'(例如:http://stackoverflow.com/questions/6972581/javascript-quandary-creating-a-highlighter-pen-tool-almost-there/6972694 #6972694)? –