Блог веб разработки статьи | видеообзоры | исходный код

Блог веб разработки статьи | видеообзоры | исходный код

webfanat вконтакте webfanat youtube

selection javascript

selection  javascript

Всем привет! Сегодня мы с вами рассмотрим возможности объекта selection. Данный объект возвращает информацию о выделенной части текста. Итак, поехали!

Для начало давайте выделим часть контента на сайте и попробуем выполнить в консоли браузера следующую команду.

var selection = window.getSelection();
console.log(selection);

В результате нам вернется объект selection со множеством параметров с помощью которых мы сможем получить наш выделенный текст.

Для более удобной читабельности все это дело можно облагородить используя метод getRangeAt().

var selection = window.getSelection();
var selRange = selection.getRangeAt(0);
console.log(selRange);

Здесь в объекте selection мы оставили только основные параметры тем самым упрощая работу с данным объектом.

Теперь пойдем по порядку и рассмотрим самые основные свойства(параметры) объекта selection.

Свойство startContainer возвращает весь текст элемента в котором мы осуществили его выделение.

selRange.startContainer;

Причем тут стоит две особенности. Во первых данный параметр возвращает не сам выделенный текст, а весь текст элемента в котором мы осуществляем выделение. Во вторых если мы выделим текст двух разных элементов данное свойство вернет текст только первого из них.

Для того чтобы получить все элементы в которых мы осуществляем выделение текста можно воспользоваться свойством commonAncestorContainer.

selRange.commonAncestorContainer;

В результате нам вернется dom структура элементов, текст которых был выделен.

Для того чтобы их все перебрать достаточно воспользоваться свойством

NodeList. selRange.commonAncestorContainer.childNodes;

На выходе будет получен массив с элементами текст которых был выделен. Чтобы получить текст который мы выделили необходимо воспользоваться еще двумя параметрами startOffset и endOffset. Данные свойства возвращает начальную и конечную позицию строки элемента. Именно эти два параметра и определяют область выделения.

Пример:

var selection = window.getSelection();
var selRange = selection.getRangeAt(0);
var text = selRange.startContainer.data,
	start = selRange.startOffset,
	end = selRange.endOffset;
console.log(text.substring(start, end));

С помощью данного кода мы и получаем часть текста которую выделили. Как видите вначале получаем текст всего элемента, начальную и конечную позицию выделения и помещаем все это дело в переменные. Заметьте что при использовании свойства startContainer мы в конце обращаемся к ключу data. Все дело в том что параметр startContainer изначально возвращает объект в виде строки текста. И для получения самой строки необходимо обратится к ключу data.

В конце при выводе мы используем стандартную функцию substring() в которую передаем начальную и конечную позицию выделения. Отмечу что данный код работает при условии когда выделен текст в пределах одного элемента(тега) страницы.

Для того чтобы получить и соединить текст выделенный в разных элементах необходимо еще немного повозится. Ну да ладно. Оставляю данную задачу вам в качестве домашнего задания для закрепления навыков).

А на этом у меня на сегодня все. Не забывайте оставлять комментарии и подписывайтесь в мою группу

вк.

Желаю вам успехов и удачи! Пока.

Оцените статью:

Статьи

Комментарии

Внимание!!! Комментарий теперь перед публикацией проходит модерацию

Все комментарии отправлены на модерацию

Реклама

Запись экрана

Данное расширение позволяет записывать экран и выводит видео в формате webm