Получение начального и конечного индекса выделенного текста?

Учитывая следующую произвольную строку:

«Это первая страница, это вторая страница, это вторая страница, а это третья страница».

Я выделяю (перетаскиваю курсор по тексту и выбираю) случайную подстроку; в этом примере я выделяю второе вхождение термина "вторая страница".

Я получаю этот выделенный текст, используя:

var text = window.getSelection().toString();

Теперь мне нужно определить начальный и конечный индекс выделенного термина в тексте.

Строка и выделенный термин являются произвольными - шаблон для выбора отсутствует.

А если бы ваш текст был "This is page one, and this is page two, and this is page three." - каким был бы ваш ожидаемый результат?

connexo 23.02.2019 15:54

Второе вхождение (выделенный текст). Не был уверен, должен ли я добавить это в пример - сделаю это сейчас.

user9467747 23.02.2019 15:55

Как выделено слово? Есть ли в строке html-теги? Вы действительно просто спрашиваете, как найти слово в строке, заключенной в тег?

Charlie Wallace 23.02.2019 16:01

Почему второй? Есть ли шаблон?

Jonas Wilms 23.02.2019 16:04

Шаблона нет, это просто текст, который я случайно выбрал для выделения. Например, я мог бы выделить третье вхождение слова "and"

user9467747 23.02.2019 16:05

Чтобы получить хороший ответ, вам нужно будет описать, как слово выделено? Если это html-теги, в stackoverflow уже есть много хороших ответов. Посмотрите на stackoverflow.com/questions/2818547/… и johnresig.com/blog/pure-javascript-html-parser

Charlie Wallace 23.02.2019 16:07

Выделено с точки зрения выделения текста мышкой.

user9467747 23.02.2019 16:09

Мне потребовалось некоторое время, чтобы понять, что слово выделенный на самом деле является выделенный в данном вводе. Судя по ответам я не один такой...

Jonas Wilms 23.02.2019 16:26

Если вы посмотрите на tge dupe, вы найдете activeEl.selectionStart и selectionEnd

Jonas Wilms 23.02.2019 16:33

Спасибо @JonasWilms - хотя я стремлюсь сделать это без использования текстовой области.

user9467747 23.02.2019 16:59
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
10
1 152
1

Ответы 1

Это даст вам начальный и конечный индекс выделенного курсором текста.

 //To get start index
window.getSelection().anchorOffset
// To get end index
window.getSelection().focusOffset

Пожалуйста, смотрите обновленный пример. Ему нужно получить индекс выделенного текста в произвольной строке. Это не всегда будет первым или последним случаем.

user9467747 23.02.2019 16:01

Это было сделано до редактирования. Сейчас код изменен. Дайте мне знать, если это то, что нужно.

Krishnadas PC 23.02.2019 16:21

Та же проблема, что и в приведенных выше ответах, к сожалению, мы не будем знать, какова позиция выбранного слова (оно может быть первым или сотым), но мы хотим получить только индексы выбранного слова, а не все из них.

user9467747 23.02.2019 16:25

Пожалуйста, проверьте, это ли то, что вы ожидаете.

Krishnadas PC 23.02.2019 16:47

Это не индекс, а только длина слова, насколько я могу судить.

user9467747 23.02.2019 16:54
"This is page one, This is page two, and this is page two, and this is page three." Если выбран второй page курсором, какой ответ вы ожидаете?
Krishnadas PC 23.02.2019 16:56

startIndex = 26, endIndex = 29 Метод .selectionStart и .selectionEnd, упомянутый в комментариях выше, работает, но я пытаюсь найти обходной путь без использования текстовой области.

user9467747 23.02.2019 16:57

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