Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   WYSIWYG-редактор (https://javascript.ru/forum/misc/14024-wysiwyg-redaktor.html)

kolomiets.web-art 24.12.2010 19:02

WYSIWYG-редактор
 
пишу свой редактор... есть проблема со вставкой отфарматированного выделения обратно во фрейм... вот код

function AddLink() {
    var notIE = (window.addEventListener) ? true : false;
    var iframe = window.opener.document.getElementById('message');
    if (notIE) {
        AnCode = '<a href=' + document.getElementById('protocol').value + document.getElementById('path').value + '>' + iframe.contentWindow.getSelection() + '</a>';
        alert(AnCode);
        var range = iframe.contentWindow.getSelection().getRangeAt(0);
        range.insertNode(AnCode);
        range.execCommand();
    }
    else {
        var AnCode = '<a href=' + document.all.protocol.value + document.all.path.value + '>' + window.opener.frames.message.document.selection.createRange().text + '</a>';
        alert(AnCode);
        var range = window.opener.frames.message.document.selection.createRange();
        range.pasteHTML(AnCode);
        range.execCommand();
    }
    window.close();	
}


работает только в IE... проблема в pasteHTML для Mazilla и Opera

данная функция вставляет ссылку

помогите пожалуйста....

monolithed 24.12.2010 19:27

document.all - только для IE и Opera! не используйте это никогда!

статья по теме:
http://2007.fastcoder.ru/articles/?aid=609

kolomiets.web-art 28.12.2010 17:06

надо было просто для Mazilla сделать так iframe.contentWindow.document.execCommand('insertH TML', false, AnCode);

kolomiets.web-art 28.12.2010 17:11

но все равно спасибо, я больше не использую document.all...

есть еще вопрос по теме...

вот у меня есть код который обрамляет выделение тегом с классом:
function InsertDate(message, start_tag, end_tag) {
    if (document.getSelection) {
        var iframe = document.getElementById('message');
        var selection = iframe.contentWindow.getSelection().getRangeAt(0);
        var date = '<span class="date">' + selection + '</span>';
        iframe.contentWindow.document.execCommand('insertHTML', false, date);
    }
    else {
        iframe = frames.message;
        selection = iframe.document.selection.createRange().text;
        range = iframe.document.selection.createRange();
        date = '<span class="date">' + selection + '</span>';
        range.pasteHTML(date);
        range.select();
    }
    iframe.focus();
}


теперь я хочу чтобы у меня была возможность отменить это форматирование... есть кнопка, на которую я повесила вот эту функцию:
function DeleteDate() {
    if (document.getSelection) {
        var iframe = document.getElementById('message');
        iframe.contentWindow.document.execCommand('RemoveFormat', false, true);
    }
    else {
        iframe = frames.message;
        var selection = iframe.document.selection.createRange().text;
        var range = iframe.document.selection.createRange();
        range.execCommand('RemoveFormat', false, true);
    }
    iframe.focus();
}


но увы она не работает в IE...

подскажите, что не так...


Часовой пояс GMT +3, время: 17:15.