Как очистить содержимое редактора openwysiwyg? - PullRequest
3 голосов
/ 12 июня 2009

Я использую редактор openwysiwyg на своей веб-странице. Я хочу очистить его содержимое. Я использовал

$('#report').val('');

но это не ясно.

Редактор создает iframe и обновляет там содержимое, синхронизируя его по ходу.

Как мне очистить его?

Ответы [ 3 ]

5 голосов
/ 12 июня 2009

Возможно, вам потребуется предоставить немного больше информации - сам html был бы очень полезен, но я собираюсь предположить, что report - это идентификатор текстовой области, которую вы должны очистить.

Если это обычная текстовая область, ваш код должен действительно работать.

Если (как упоминает Пауло в комментариях) он изменяется редактором openwysiwyg, он, вероятно, превращается в iFrame со своей собственной HTML-страницей. Управлять iFrame намного сложнее.

Похоже, это так.


Посмотрите на этот пример, чтобы убедиться, что он помогает вам ссылаться на сам iFrame: http://www.bennadel.com/index.cfm?dax=blog:1592.view


Это взломанная выдержка из файла example.html, поставляемого с openwysiwyg:

<script type="text/javascript">
    // Use it to attach the editor to all textareas with full featured setup
    //WYSIWYG.attach('all', full);

    // Use it to attach the editor directly to a defined textarea
    WYSIWYG.attach('textarea1'); // default setup
    WYSIWYG.attach('textarea2', full); // full featured setup
    WYSIWYG.attach('textarea3', small); // small setup

    // Use it to display an iframes instead of a textareas
    //WYSIWYG.display('all', full);  

    function getIFrameDocument( id )
    {
        var iframe = document.getElementById(id);

        if (iframe.contentDocument) {
            // For NS6
            return iframe.contentDocument; 
        } else if (iframe.contentWindow) {
            // For IE5.5 and IE6
            return iframe.contentWindow.document;
        } else if (iframe.document) {
            // For IE5
            return iframe.document;
        } else {
            return null;
        }
    }

    function clearcontents()
    {
        getIFrameDocument('wysiwygtextarea1').body.innerHTML = '';
    }
</script>

Тогда где-то на странице у меня есть кнопка очистки (на самом деле div):

<div style="width:120px;height:20px;background:#ff0000;text-align:center;display:block;" onclick="clearcontents();">Clear!</div>

Обратите внимание, что перед идентификатором вашей текстовой области стоит префикс wysiwyg. Это название iFrame.

Я проверял это в Firefox, но пока ничего больше. Код для получения iFrame я нашел в сети где-то, так что, надеюсь, он работает для других браузеров:)

1 голос
/ 12 июня 2009

Это работает, но безобразно:

var frame = WYSIWYG.getEditor('--ENTER EDITOR NAME HERE--');
var doc = frame.contentWindow.document;
var $body = $('html',doc);
$body.html('');

Замените --ENTER EDITOR NAME HERE-- на то, что вы передаете редактору при вызове attach.

0 голосов
/ 12 июня 2009

Я считаю, что это работает

$('#report').text('');
...