CKEditor: применить removeFormat к вставке - PullRequest
8 голосов
/ 30 августа 2011

Мне удалось настроить событие при вставке для захвата HTML-кода, вставленного в текстовую область по мере его вставки.

Мне нужно автоматически применить команду removeFormat к этому HTML до или во времяон вставляется в текстовую область, так что я могу лишить его классов, различных тегов и других атрибутов.Может ли кто-нибудь указать мне правильное направление для правильного применения команды removeFormat?

Вот мой код:

$(function(){
        $('textarea').ckeditor(
            function( textarea ){
                var editor = this;
                editor.on('paste', function( e ) { 
                    //alert(e.data.html); // This shows the HTML
                    editor.execCommand( 'removeFormat', e.data.html ); // Doesn't seem to do anything, HTML is pasted with the attributes intact
                    });              
            }
        )
    });

Спасибо!

PS Параметр Force text text isне жизнеспособен, так как есть некоторые элементы HTML, которые я хочу сохранить (p, table и другие).

Ответы [ 3 ]

22 голосов
/ 26 сентября 2012

Вы можете использовать

config.forcePasteAsPlainText = true;

cf http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html

2 голосов
/ 04 сентября 2011

Вам нужно выбрать содержимое, прежде чем вы сможете применить к нему removeFormat.

Вы можете попробовать захватить диапазон (даже если это просто курсор, расположенный в точке вставки) и сохранить закладку перед вставкой.

После вставки используйте закладку, чтобы снова выбрать этот диапазон.

Это должно выбрать все, что вы вставили между началом и концом диапазона.

Тогда вы можетеиспользуйте removeFormat:

editor.execCommand( 'removeFormat', editor.selection );

Вот ссылки на страницы API диапазона и выбора:

http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dom.range.html

http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dom.selection.html

Мне было легче работать с диапазонами, метод createBookmark хорош, потому что он устанавливает маркеры, и вы можете получить правильныйначальная и конечная точки, даже если DOM изменяется (как это будет при вставке нового содержимого).Вы можете использовать moveToBookmark () после вставки, чтобы выбрать диапазон.

http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dom.range.html#createBookmark

Поскольку документации недостаточно, я нашел полезным поискать в исходном коде места, гдеметоды называются.Изучение того, как они используются, дает мне лучшее представление о том, к какому объекту я должен применить методы.

Будь здоров, Джо

1 голос
/ 06 января 2014

Начиная с CKEditor 4.1, нет необходимости выполнять пользовательское кодирование для определения списка элементов, которые должны сохраняться при вставке данных в CKEditor, Расширенный фильтр содержимого должен сделать свое дело.

Либо оставьте ACF включенным с конфигурацией по умолчанию - CKEditor будет принимать все теги, которые могут быть созданы с его помощью, либо определите свой собственный набор правил с более или менее строгим набором разрешенных тегов / атрибутов / стилей. См. документацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...