Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.10.2013, 17:37
Аватар для mi.rafaylik
Кандидат Javascript-наук
Отправить личное сообщение для mi.rafaylik Посмотреть профиль Найти все сообщения от mi.rafaylik
 
Регистрация: 07.12.2012
Сообщений: 113

Range и пользовательское выделение
Известно, насколько негибкий и неоднозначный execCommand.
Альтернативой являются объекты Range, TextRange и пользовательское выделение Selection, но разобраться с ними не так просто.
Пример из основ, пока что для всех браузеров, кроме IE:
// получить range-объект из выделенного текста можно так
var sel = document.getSelection().getRangeAt(0);
// обернуть выделенный текст (range-объект) тегом
sel.surroundContents(document.createElement('h1'));

Вопрос: как проверять, в каком теге (тегах) уже находится выделенный текст, чтоб не получить многократное оборачивание?
<div contenteditable="true">
	<p>First paragraph</p><p>Second paragraph. <b>Bold text</b>.</p>
<div>

Последний раз редактировалось mi.rafaylik, 06.10.2013 в 18:39.
Ответить с цитированием
  #2 (permalink)  
Старый 06.10.2013, 18:27
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 06.10.2013, 19:10
Аватар для mi.rafaylik
Кандидат Javascript-наук
Отправить личное сообщение для mi.rafaylik Посмотреть профиль Найти все сообщения от mi.rafaylik
 
Регистрация: 07.12.2012
Сообщений: 113

Странно но Firefox и Webkit-браузеры по-разному возвращают ссылку на commonAncestorConteiner.
Если внутри элемента выделена лишь часть текста, ссылка одинаковая - на элемент.
Если выделить весь текст элемента, Webkit ссылаются на сам элемент, в который вложен текст, а Firefox ссылается на родителя этого элемента, то есть при выделении учитываются теги.
Кажется эта область называется Node.

Последний раз редактировалось mi.rafaylik, 07.10.2013 в 10:05.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оставить выделение при смене фокуса DZHETIGAPA Events/DOM/Window 5 01.02.2018 20:11
jQuery UI Range slider как заблокировать левый ползунок по первому клику Oleg_Pupkin jQuery 3 04.09.2013 13:44
document.execCommand и выделение sexyQuery Общие вопросы Javascript 1 08.07.2013 06:13
Выделение текста в текстовом поле. Как снять выделение с пробела вконце? Roman Koff Events/DOM/Window 10 01.07.2010 16:48
Выделение одиночных тэгов Pattern Events/DOM/Window 7 26.05.2009 23:29