Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение КОРРЕКТНОГО HTML кода в Opera/ Chrome, во wysiwyg  
:(
    Опции темы
Frozen_Coyote
Дата 9.2.2011, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 20.9.2007

Репутация: нет
Всего: нет



Добрый день, 

нужна помощь

ситуация следующая: пишу простой wysiwyg? столкнулся с неприятным нюансом. 

Есть у меня некий текст в iframe, я его выделяю, нажимаю кнопочку "Жирный" - текст выделенный как и положено становится жирным. Это норм. Во всех браузерах. А вот далее проблема: я нажимаю вторую кнопочку (назовем ее показ html) , к ней привязан вызов функции, который должен мне в alert показать выделенный текст вместе с html кодом (в данном случае strong или b) и что выходит на проверку: ИЕ отдает все великолепно, выделенный текст вместе с тегами, все чин чинарем. А опера и гугля хромная ведут себя неадекватно: выделяю текст - делаю жирным - не снимая выделения нажимаю кнопку показ html - отображается все тот же текст без тэгов. Но само еинтересное - если я еще раз выделю текст и зацеплю впереди стоящий символ, или последующий - тогда обрамляющие теги показываются, если я СТРОГО выделю жирный текст - то опять показывается ТОЛЬКО текст, без тегов. Помогите плиз - весь чердак себе свернул уже ((

привожу код функций:

Код

Первая функция, вызывается при нажатии на кнопку "показ HTML". Я убрал все лишнее, что может отвлечь.

function Start(iframe_id)
{
     isGecko = navigator.userAgent.toLowerCase().indexOf("gecko") != -1;
     iframe = (isGecko) ? document.getElementById(iframe_id) : frames[iframe_id];

     //ЕСЛИ БРАУЗЕР - ИЕ      if(navigator.appName == "Microsoft Internet Explorer")
       {
    sel = iframe.document.selection;
    ran = sel.createRange();
    flength = ran.text.length;
    ran.moveStart('textedit', -1);
    fend = ran.text.length;
    fstart = fend - flength;
        }

// ОБРАТИТЕ ВНИМАНИЕ - ТУТ ИДЕТ ВЫЗОВ СОБСТВЕННО ФУНКЦИИ, КОТОРАЯ И ДЕЛАЕТ ВСЮ РАБОТУ 
my_html_fragment = getMyHtmlSelection(iframe_id);

            alert(my_html_fragment)
}

// И САМА ФУНКЦИЯ

    function getMyHtmlSelection(iframe_id)
    {
        var iframe = document.getElementById(iframe_id);
        var idoc = iframe.contentDocument || iframe.contentWindow.document; // ie compatibility
        var txt = '';

        //OPERA И КОМПАНИЯ
        if(idoc.getSelection)
        {
            var sel = iframe.contentWindow.getSelection();
            var ran = sel.getRangeAt(0);
            var tempel = document.createElement('div');
            tempel.appendChild(ran.cloneContents());
            txt = tempel.innerHTML;

        }
        //IE
        if(idoc.selection)
        {
         txt = idoc.selection.createRange().htmlText;
        }

        return txt;
    }





Убедительно прошу помочь

спасибО!!!

Это сообщение отредактировал(а) Frozen_Coyote - 9.2.2011, 14:00
PM MAIL   Вверх
ayax2005
Дата 10.2.2011, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


echo $smile
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 17.4.2008
Где: Питер

Репутация: 2
Всего: 11



Круто. Попробуйте в алерте для оперы и хрома оборачивать код тегами <pre>.
Хотя я не проверял.


--------------------
все вопросы - из-за неверной формулировки задачи
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0842 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.