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, время: 09:41. |