JavaScript обнаруживает смещение текста в узле в позиции

Я хотел бы обнаружить смещение элемента и текста под указанными координатами x и y.

Допустим, у нас есть такой DOM:

<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Nam quis nisl lectus. Donec euismod dignissim turpis, nec 
viverra nulla iaculis nec. _Fusce_ mattis orci eget nibh 
rhoncus auctor at in enim.
</p>

Когда пользователь щелкает мышью непосредственно перед словом _Fusce_ имея координаты х и у, я хотел бы получить смещение слова _Fusce_ в текстовом узле в качестве индекса. Это возможно?

1 ответ

Решение

WebKit имеет document.caretRangeFromPoint() за это. Спецификация CSSOM View имеет document.caretPositionFromPoint(), но только Firefox 20 и более поздние версии в настоящее время реализуют его.

В Firefox, если интересующая вас позиция произошла из события мыши, вы можете получить эту информацию непосредственно из события, которое имеет свойства rangeParent а также rangeOffset,

Вот похожий вопрос с примером кода:

/questions/20248777/peretaschite-izobrazhenie-v-contenteditable-v-chrome-do-kursora/20248787#20248787

Другие вопросы по тегам