Диапазон getClientRects(), getBoundingClientRect() неправильный, когда в абзаце HTML есть пустой якорь
Я обнаружил странное поведение getClientRects() [getBoundingClientRect()]
:
Посмотрите на этот HTML-код:
<p>Text here... word1<a id='id' class='class'/>word2 Other multiline Text here...</p>
[Обратите внимание, что внутри элемента a нет текста, я тестировал только этот вид кода, не знаю, дают ли другие механизмы такую же "ошибку".]
Предположим, что когда пользователь выбирает диапазон в p 'estate', в котором есть привязка, например "word1 word2", функция JS сохраняет начальные / конечные элементы и смещения. В следующий раз другая функция создаст диапазон с этими границами. Но если getClientRects()
вызывается в этом диапазоне, он выдает много ректов, отличных от двух ожидаемых: первый и последний ректы массива действительно являются ожидаемыми, но между ними есть много ректов, которые фактически покрывают весь элемент p.
[range.getBoundingClientRect()
тоже страдает.] Как этого избежать?