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

получение контента childNodes
Столкнулся с проблемой, которая, как оказалось, не так уж и тривиально решается.
Есть функция.

function mk_Selection(){ 
  var sel, output; 
  if (window.getSelection) { 
     sel = window.getSelection().getRangeAt(0).cloneContents(); 
  } else if (document.selection) { 
     sel = document.selection.createRange().htmlText; 
  }; 
 return sel;
}


Она берет выделенный фрагмент текста и возвращает его вместе со всей разметкой.
Одно НО!
Полученный результат невозможно вставить куда-то на страницу, поскольку он представляет собой объект Document Fragment.

Попытка получить его посредством
var st = mk_Selection();
 for (var i = 0; i < st.childNodes.length; i++) 
....

Успехом не увенчивается, поскольку у childNodes нет единого формата вывода, а перечислять все возможные виды тэгов и их атрибуты, чтобы сохранить разметку, - нереально.

Может, я что-то где-то пропустил, хотелось бы что-то в духе
var st = mk_Selection();
$(st).text();

(выводит только текст, без разметки, но нужно с разметкой, т.е. что-то типа $(st).html())

Иначе говоря, гуглю, да никак не нагуглю конвертацию чайлдНодов в стринг .

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

Заранее благодарен.
Ответить с цитированием