Самые активные пользователи:

  • UnInstaller ( 199 сообщений )
  • vizit ( 101 сообщение )
  • San4o ( 71 сообщение )
  • Apostol ( 60 сообщений )
  • avattar ( 22 сообщения )
  • Kruger ( 8 сообщений )
  • haks ( 7 сообщений )
  • Poputchyk ( 6 сообщений )
  • etc ( 6 сообщений )
  • BOPOH ( 4 сообщения )
  • [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]


    • Страница 1 из 1
    • 1
    Модератор форума: UnInstaller, San4o  
    Форум » Программирование и техника » WEB-программирование и Интернет » Простейший WYSIWYG (визуальный редактор) на Javascript
    Простейший WYSIWYG (визуальный редактор) на Javascript
    UnInstallerДата: Пятница, 27.03.2009, 21:40 | Сообщение # 1
    Admin
    Группа: Администраторы
    Сообщений: 199
    Дата регистрации: 23.02.2008
    Пол: Парень
    Откуда: Украина
    Репутация: 14
    Статус: Offline
    Что такое WYSIWYG?

    WYSIWYG - аббревиатура What You See Is What You Get. В переводе: "что вижу, то и получаю". В висивиге можно просматривать и редактировать HTML-содержимое не редактируя HTML-код. Наиболее близкая аналогия ВИСИВИГу - это текстовый процессор от Microsoft Word, с которым многие знакомы. В нем, чтобы поставить жирность или курсив, не нужно писать теги или другие элементы форматирования, достаточно просто нажать соотствующую функциональную кнопку.

    Как это работает?

    Для написания простого ВИСИВИГа не нужно изобретать велосипед, все средства уже встроены и успешно работают. Механизм работы большинства визуальных редакторов основан на свойстве designMode объекта document. Это встроенное свойство (к сожалению, далеко не для всех браузеров, но для большинства современных) как раз и позволяет редактировать HTML-контент. После его активанции (designMode='On') на web-страницу можно ставить привычный нам курсор и набивать, удалять или изменять форматирование контента.

    Бывает удобно не редактировать всю страницу, а иметь какую-то фиксированную область, для чего используется iframe. Именно его объект document используется для активации свойства designMode.

    Форматирование содержимого в пределах ВИСИВИГа осуществляется с помощью непростого метода execCommand, реализация которого сильно различается от браузера к браузеру.

    Смотрим JavaScript-код для простейшего ВИСИВИГа:

    Код JavaScript

    Code
    // ***********************
    // ШАГ 1: Выводим iframe и получаем доступ к нему
    // ***********************

    // Выводим в HTML-поток iframe
    document.write("<iframe scrolling='no' frameborder='no' src='#' id='frameId' name='frameId'></iframe><br/>");
    // Определим Gecko-браузеры, т.к. они отличаются в своей работе от Оперы и IE
    var isGecko = navigator.userAgent.toLowerCase().indexOf("gecko") != -1;
    // Получаем доступ к объектам window & document для ифрейма
    var iframe = (isGecko) ? document.getElementById("frameId") : frames["frameId"];
    var iWin = (isGecko) ? iframe.contentWindow : iframe.window;
    var iDoc = (isGecko) ? iframe.contentDocument : iframe.document;

    // ***********************
    // ШАГ 2: Добавим на пустую страницу ифрейма произвольный HTML-код
    // ***********************

    // Формируем HTML-код
    iHTML = "<html><head>\n";
    iHTML += "<style>\n";
    iHTML += "body, div, p, td {font-size:12px; font-family:tahoma; margin:0px; padding:0px;}";
    iHTML += "body {margin:5px;}";
    iHTML += "</style>\n";
    iHTML += "<body><u>Содержимое</u> с <b>HTML</b>-<i>разметкой</i></body>";
    iHTML += "</html>";
    // Добавляем его с помощью методов объекта document
    iDoc.open();
    iDoc.write(iHTML);
    iDoc.close();

    // ***********************
    // ШАГ 3: Инициализация свойства designMode объекта document
    // ***********************

    if (!iDoc.designMode) alert("Визуальный режим редактирования не поддерживается Вашим браузером");
    else iDoc.designMode = (isGecko) ? "on" : "On";

    // ***********************
    // ШАГ 4: Простейшие элементы редактирования: жирность, курсив, подчеркивание
    // ***********************

    // Выведем HTML-код этих элементов
    document.write("<input type='button' value='Ж' onclick='setBold()' class='bold' />");
    document.write("<input type='button' value='К' onclick='setItal()' class='ital' />");
    document.write("<input type='button' value='Ч' onclick='setUnder()' class='under' />");
    // Запишем код функции, для выставления форматирования
    // Используется метод execCommand объекта document
    function setBold() {
    iWin.focus();
    iWin.document.execCommand("bold", null, "");
    }
    function setItal() {
    iWin.focus();
    iWin.document.execCommand("italic", null, "");
    }
    function setUnder() {
    iWin.focus();
    iWin.document.execCommand("underline", null, "");
    }

    Пример работы простейшего ВИСИВИГа

    Замечение:

    Данная версия визуального редактора не может работать в Опере ниже версии 9.01 и покажет предупреждение "Визуальный режим редактирования не поддерживается Вашим браузером". Работоспособность проверена в:
    - IE 6;
    - FF 1.5;
    - Opera 9.01 +;
    - Mozilla 1.7.2;
    - NN 7.1 +;



    http://vkontakte. ru/prog_mc
    http://vkontakte. ru/metallizard
    Форум » Программирование и техника » WEB-программирование и Интернет » Простейший WYSIWYG (визуальный редактор) на Javascript
    • Страница 1 из 1
    • 1
    Поиск:


    Copyright UnInstallerSofT © 2024 V1T.RU