Вычисление текстового выбора смещает в элементах вложенного множества в JavaScript

Проблема

Я пытаюсь выяснить смещение выбора от конкретного узла с JavaScript.

Скажите, что у меня есть следующий HTML

<p>Hi there. This <strong>is blowing my mind</strong> with difficulty.</p>

Если я выбираю от выдувания до трудности, оно дает мне смещение от #text узел в <strong>. Мне нужно строковое смещение от <p> innerHTML и продолжительность выбора. В этом случае смещение было бы 26, и длина будет 40.

Моя первая мысль состояла в том, чтобы сделать, что-то со строковыми смещениями, и т.д. кроме Вас могло легко иметь что-то как

<p> Hi there. This <strong>is awesome</strong>. For real. It <strong>is awesome</strong>.</p>

который повредил бы тот метод, потому что существуют идентичные узлы. Мне также нужна опция вывести узлы. Скажите, что у меня есть что-то вроде этого

<p>Hi there. <a href="#" rel="inserted">This <strong>is blowing</a> my mind</strong> with difficulty.</p>

Я хочу вывести элементы с rel="inserted" когда я делаю вычисление. Я все еще хочу 26 и 40 как результат.

Что я ищу

Решение должно быть рекурсивным. Если был a <span> с a <strong> в нем он должен был бы все еще пересечь к <p>.

Решение должно удалить длину любого элемента с rel="inserted". Содержание важно, но сами теги не. Все другие теги важны. Я сильно предпочел бы не удалять любые элементы из DOM, когда я делаю все это.

Я использую document.getSelection() получить объект выбора. Это решение только должно работать в WebKit. jQuery является опцией, но я предпочел бы ему без него, если это возможно.

Любые идеи значительно ценились бы.

Я не имею никакого контроля над HTML я делающий все это на.

6
задан Sam Soffes 30 July 2010 в 16:13
поделиться