Opera, FireFox, Chrome - проблема с получение HTML выдеенно фрагмента
Добрый день,
сражаюсь с проблемой - никак не получается справиться - помогите кто может Для начала прошу открыть ссылку - это мой wysiwyg, точнее его часть Описание проблемы: Открываем ИЕ. В нем открываем редактор, выделяем ссылочку (четко по ее границам), нажимаем ТЕСТ и в алерте получаем HTML всей ссылки. Это то что надо, великолепно. Теперь открываем Хрому или Оперу - не суть. В ней открываем редактор, выделяем ссылочку (четко по ее границам), нажимаем ТЕСТ и в алерте получаем СОВСЕМ НЕ ТО ЧТО НУЖНО - только текст, без HTML. А вот если мы выделим ссылку + еще один (или больше) символов (неважно с какой стороны - слева, справа) - получаем то что нужно - в алерте отображается весь HTML ссылки ПОЧЕМУ ТАК, друзья? Я уже голову свернул ((( Ниже код функции
function getMyHtmlSelection(iframe_id)
{
var iframe = document.getElementById(iframe_id);
var idoc = iframe.contentDocument || iframe.contentWindow.document; // ie compatibility
var txt = '';
//MOZILLA
if(idoc.getSelection)
{
var select = iframe.contentWindow.getSelection();
var range = select.getRangeAt(0);
var tempel = document.createElement('div');
tempel.appendChild(range.cloneContents());
var txt = tempel.innerHTML;
}
//IE
if(idoc.selection)
{
txt = idoc.selection.createRange().htmlText;
}
alert(txt);
}
|
Привет!
Судя по вопросу до рабочего визивига еще далеко. А судя по отсутствию ответов понятно, что не многие так "глубоко копают" JavaScript. Если перед получением выделенного фрагмента Вставить такой код: range.selectNode(range.commonAncestorContainer.parentNode); Тогда при выделении текста от начала до конца какого либо тега получим текст вместе с его контейнером т.е. обрамленный тегами. Правда если выделить несколько узлов, получим их общего родителя, возможны варианты получить все вместе с тегом <body>, по этому нужно хорошо продумать алгоритм. Если есть другие варианты буду рад увидеть. |
| Часовой пояс GMT +3, время: 00:23. |