Проблема
Я пытаюсь выяснить смещение выделения из определенного узла с помощью JavaScript.
Скажем, у меня есть следующий HTML
<p>Hi there. This <strong>is blowing my mind</strong> with difficulty.</p>
Если я выбираю из , дуя до сложности , это дает мне смещение от узла #text
внутри <strong>
.Мне нужно смещение строки от <p>
s innerHTML
и длины выделения.В этом случае смещение будет равно 26, а длина - 40.
Моей первой мыслью было что-то сделать со смещением строк и т. Д., Но вы могли легко получить что-то вроде
<p> Hi there. This <strong>is awesome</strong>. For real. It <strong>is awesome</strong>.</p>
* 1020.* который сломал бы этот метод, потому что есть идентичные узлы.Мне также нужна опция, чтобы выбрасывать узлы.Скажем, у меня есть что-то вроде этого
<p>Hi there. <a href="#" rel="inserted">This <strong>is blowing</a> my mind</strong> with difficulty.</p>
Я хочу выбросить элементы с rel="inserted"
, когда я делаю вычисления.Я все еще хочу 26 и 40 в результате.
То, что я ищу
Решение должно быть рекурсивным.Если бы было <span>
с <strong>
в нем, ему все равно нужно было бы перейти к <p>
.
. В решении необходимо удалить длину любого элемента с помощью rel="inserted"
.Содержание важно, но сами теги не являются.Все остальные теги важны.Я бы настоятельно предпочел не удалять какие-либо элементы из DOM, когда я делаю все это.
Я использую document.getSelection()
, чтобы получить объект выбора.Это решение должно работать только в WebKit.jQuery - вариант, но я бы предпочел его без него, если это возможно.
Буду признателен за любые идеи.
Я не контролирую HTML, над которым я все это делаю.