Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 05.06.2010, 15:52
Аватар для Geddar
Кандидат Javascript-наук
Отправить личное сообщение для Geddar Посмотреть профиль Найти все сообщения от Geddar
 
Регистрация: 23.05.2009
Сообщений: 100

Создал пустой документ, поставил scr на него присвоил body id'шник и через innerHTML всё заработало, Спасибо
__________________
Обходя грабли ты теряешь драгоценный жизненный опыт!
Ответить с цитированием
  #12 (permalink)  
Старый 05.06.2010, 17:12
Аватар для Geddar
Кандидат Javascript-наук
Отправить личное сообщение для Geddar Посмотреть профиль Найти все сообщения от Geddar
 
Регистрация: 23.05.2009
Сообщений: 100

Последний вопрос по данной теме, я тут нагуглил execCommand у которго есть определённые команды. Можно ли форматировать выделеное своим html кодом не ограничиваясь набором команд?
__________________
Обходя грабли ты теряешь драгоценный жизненный опыт!
Ответить с цитированием
  #13 (permalink)  
Старый 05.06.2010, 18:44
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от bash
user
Здравствуйте
support
Добрый вечер.
user
форум на сайте не работает...
user
можно разобраться в чем проблема
support
Можно. Разбирайтесь.
http://bash.org.ru/quote/168627
Ответить с цитированием
  #14 (permalink)  
Старый 05.06.2010, 19:09
Аватар для Geddar
Кандидат Javascript-наук
Отправить личное сообщение для Geddar Посмотреть профиль Найти все сообщения от Geddar
 
Регистрация: 23.05.2009
Сообщений: 100

(|||:) имхо
Если не знаешь или в лом ответить - лучше промолчать.
__________________
Обходя грабли ты теряешь драгоценный жизненный опыт!
Ответить с цитированием
  #15 (permalink)  
Старый 05.06.2010, 19:45
Аватар для Geddar
Кандидат Javascript-наук
Отправить личное сообщение для Geddar Посмотреть профиль Найти все сообщения от Geddar
 
Регистрация: 23.05.2009
Сообщений: 100

function nodeList(parentNode, list, level) {
    var i, node, count;
    if (!list) list = new Array();
    level++;
    for (i = 0; i < parentNode.childNodes.length; i++) {
        node = parentNode.childNodes[i];
        if (node.nodeType != 1) continue;
        count = list.length;
        list[count] = new Array();
        list[count][0] = node;
        list[count][1] = level;
        nodeList(node, list, level);
    }
    return list;
}
// rgbNormal - приводит цвет к стандарту #RRGGBB
function rgbNormal(color) {
    color = color.toString();
    var re = /rgb\((.*?)\)/i;
    if(re.test(color)) {
        compose = RegExp.$1.split(",");
        var hex = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'];
        var result = "#";
        for (var i = 0; i < compose.length; i++) {
            rgb = parseInt(compose[i]);
            result += hex[parseInt(rgb / 16)] + hex[rgb % 16];
        }
        return result;
    } else return color;
}
function execCommandImitation(start, end) {
    // Cтавим ForeColor-форматирование с помощью специального цвета
    doc.execCommand("ForeColor", false, "#f5F856");
    // Получаем все элементы форматируемого документа
    var allNodes = nodeList(doc.body, false, 0);
    // Сортируем их по уровню вложенности
    var maxLevel = 0;
    for (i = 0; i < allNodes.length; i++) {
        maxLevel = allNodes[i][1] > maxLevel ? allNodes[i][1] : maxLevel;
    }
    // 4. Для всех элементов заменяем FONT и SPAN со специальным цветом на переданный код
    var node, newnode, color, parent;
    for (j = maxLevel; j >= 1; j--) {
        for (i = 0; i < allNodes.length; i++) {
            if (allNodes[i][1] != j) continue;
            node = allNodes[i][0];
            sname = node.nodeName.toLowerCase();
            color = node.color ? rgbNormal(node.color) : rgbNormal(node.style.color);
            if (color) color = color.toLowerCase();
            if (sname == "font" || sname == "span" && color == "#f5f856") {
                try {
                    node.innerHTML = start + node.innerHTML + end;
                } catch(e) {}
                parent = node.parentNode;
                while (node.childNodes.length > 0) parent.insertBefore(node.firstChild, node);
                parent.removeChild(node);
            }
        }
    }
    ifr.focus();
}
</script>

<span onclick="execCommandImitation('<div align=\'right\'>','</div>')">Вправо</span>


Метод конечно не идеален, но принцип ясен. Используя execCommand выделяем каким-особенным цветом текст (или другим параметром) и потом меняем это на своё.
Недостаток - такое форматирование не обратимо
__________________
Обходя грабли ты теряешь драгоценный жизненный опыт!
Ответить с цитированием
  #16 (permalink)  
Старый 05.06.2010, 19:48
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

2007 год... баян, конечно. Это ответ был. Но если ты не можешь проверить сам такую вещь, может лучше подождать с написанием WYSIWYG-редактора?
Да и просто, не обязательно сразу отвечать в тему. Почему было самому сначала не попробовать? Зачем повышать энтропию форума? Может стоит начать думать о других, почтовые ящики не резиновые ведь?

upd: почему не обратимо?
Ответить с цитированием
  #17 (permalink)  
Старый 05.06.2010, 20:16
Аватар для Geddar
Кандидат Javascript-наук
Отправить личное сообщение для Geddar Посмотреть профиль Найти все сообщения от Geddar
 
Регистрация: 23.05.2009
Сообщений: 100

Если через execCommand выделить, к примеру, жирный текст, то он станет обратно нормальным. Сдесь же такое не прокатит. И есть некоторые глюки.
"Почему было самому сначала не попробовать?" - иногда решение бывает простым, как с фреймами например, а поиски займут намного больше времени или без результатны.
И WYSIWYG-редактор нужен мне, причём своими руками, что б вставлять в теги необходимые данные и связать всё это с пхп через AJAX.

P.S. с точки зрения информатики энтропия - это мера неопределённости информации, с точки зрения физики - мера идеальности макросостояния. Конкретизируйте
__________________
Обходя грабли ты теряешь драгоценный жизненный опыт!
Ответить с цитированием
  #18 (permalink)  
Старый 05.06.2010, 20:26
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от Geddar
Если через execCommand выделить, к примеру, жирный текст, то он станет обратно нормальным.
чего он станет обратно нормальным? Можно отменить с помощью Ctrl-Z что ли?

Сообщение от Geddar
И WYSIWYG-редактор нужен мне, причём своими руками, что б вставлять в теги необходимые данные и связать всё это с пхп через AJAX
расскажи подробнее, может лучше выбрать другое решение
Ответить с цитированием
  #19 (permalink)  
Старый 05.06.2010, 20:36
Аватар для Geddar
Кандидат Javascript-наук
Отправить личное сообщение для Geddar Посмотреть профиль Найти все сообщения от Geddar
 
Регистрация: 23.05.2009
Сообщений: 100

Повторное выделение жирным отменят предыдущее. Так же с отсальными свойствами и Ctrl-Z тоже.

Подробнее:Делаю тестовую оболочку. Пользователь-"создатель теста", должен смочь добавлять инпуты. Например несколько правильных ответов. Соответсвенно их нужно пронумеровать, будь это радио или чекбоксы. А правильный ответ будет храниться в базе. К тому же, прога должна сама определять тип вопроса. например если ответ один из нескольких - радио, несколько - чекбоксы, один, который нужно самому ввести - просто инпут-текст.
__________________
Обходя грабли ты теряешь драгоценный жизненный опыт!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Маскированный ввод ZoNT Ваши сайты и скрипты 12 11.12.2012 16:42
ввод сумм с копейками. проблема с запятой Zzet Общие вопросы Javascript 2 11.02.2010 00:57
Ввод в тестовое поле по маске vesna Общие вопросы Javascript 15 04.05.2009 13:10
ввод текста StartJava Общие вопросы Javascript 5 13.04.2009 12:31
Ввод данных в таблицу pwrmind Общие вопросы Javascript 2 06.03.2009 19:17