Столкнулся с проблемой, которая, как оказалось, не так уж и тривиально решается.
Есть функция.
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())
Иначе говоря, гуглю, да никак не нагуглю конвертацию чайлдНодов в стринг .
И, напоследок, вот как выглядит в консоли хрома полученный результат. Как бы его теперь из консоли вытащить в обычный хтмл?
Заранее благодарен.