我发现了一个可能很奇怪的行为getClientRects() [getBoundingClientRect()]
:
看看这个 HTML 代码:
<p>Text here... word1<a id='id' class='class'/>word2 Other multiline Text here...</p>
[注意a元素里面没有文字,我只测试了这种代码,不知道其他排列是否给出相同的'bug'。]
假设当用户选择 p 'estate' 中包含锚点的范围时,例如“word1 word2”,JS 函数存储开始/结束元素和偏移量。下次另一个函数创建一个具有这些边界的范围。但是如果getClientRects()
在该范围内调用它会产生许多矩形而不是预期的两个矩形:数组的第一个和最后一个矩形确实是预期的,但是在它们之间,有许多矩形实际上覆盖了整个 p 元素。[range.getBoundingClientRect()
也受到影响。]如何避免这种情况?