Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.09.2013, 05:05
Новичок на форуме
Отправить личное сообщение для null28 Посмотреть профиль Найти все сообщения от null28
 
Регистрация: 24.01.2012
Сообщений: 8

Получение родительского узла выделенного текста
Получаю текст следующим образом:
function getSelectionText() {
  var txt = '';
  if (txt = window.getSelection){
    txt = window.getSelection().toString();
  } else { 
    txt = document.selection.createRange().text;
  }
  return txt;
}
...
var tx = getSelectionText();


Как-то можно получить родительский узел выделенного текста?

т.е. текст содержится в такой форме:
<div class="postbody" style="padding: 4px;">какой-то текст</div>
и я хочу как-то перейти к div

Последний раз редактировалось null28, 19.09.2013 в 05:12.
Ответить с цитированием
  #2 (permalink)  
Старый 19.09.2013, 06:27
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от null28
Как-то можно получить родительский узел выделенного текста?
Суть то в том, что можно выделить текст в двух-трех и более соседних узлах, типичное решение - 1. отслеживают onmousedown на body c делегированием события на ближайший родительский элемент, затем регуляркой по тексту уточняют затронутые выделением элементы,
либо ищут ближайшего родителя, включающего полный текст выделенного
Ответить с цитированием
  #3 (permalink)  
Старый 19.09.2013, 07:29
Новичок на форуме
Отправить личное сообщение для null28 Посмотреть профиль Найти все сообщения от null28
 
Регистрация: 24.01.2012
Сообщений: 8

У меня в принципе единовременно выделяемый текст в одном узле находится...

Цитата:
либо ищут ближайшего родителя, включающего полный текст выделенного
вот это как сделать? не очень понял... всё равно нужно вещать обработчик клика на body?
Ответить с цитированием
  #4 (permalink)  
Старый 19.09.2013, 07:38
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

getSelection().focusNode.parentNode

А с document.selection хз как
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 19.09.2013, 09:42
Новичок на форуме
Отправить личное сообщение для null28 Посмотреть профиль Найти все сообщения от null28
 
Регистрация: 24.01.2012
Сообщений: 8

спс, focusNode действительно помог
Ответить с цитированием
  #6 (permalink)  
Старый 19.09.2013, 15:40
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Для getSelection():
var sel = window.getSelection();
var rang = sel.getRangeAt(0);
var parent = rang.commonAncestorContainer;


Для IE (document.selection):
var rang = document.selection.createRange();
var parent = rang.parentElement();


в обоих случаях предполагается, что выделение есть. это надо проверить отдельно.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чат. Получение текста из флэш потока Кнопикс AJAX и COMET 9 18.11.2011 13:10
Вывод выделенного текста в форме другого окна Mrjoey Events/DOM/Window 10 22.06.2011 22:31
Получение позиции текста по координатам traa Events/DOM/Window 20 08.02.2011 14:19
получение выделенного текста ASerputko Общие вопросы Javascript 2 13.01.2011 09:57
позиция выделенного текста в textarea, начало/конец `p r o x y jQuery 3 07.05.2009 09:08