Как запретить ckeditor не добавлять в пустой тег html

У меня есть Visual Studio 2012 Express, установленный в ОС Windows 8.1 и использующий CKEditor в моем проекте согласно требованиям.

Я новичок в CKEditor и правильно его использую, но проблема заключается в определении html в источнике в CKEditor, который автоматически заменяется

<div><i class="classname"></i></div>

с

<div>&nbsp;</div> or <div></div>

Итак, как предотвратить CKEditor, чтобы не заменить его и сохранить как есть? У меня есть некоторое решение, но все еще небольшая ошибка. Я заменяю

<i class="classname"></i>

с

<div class="classname"></div>

но между тегом он автоматически добавляет & nbsp.

Как предотвратить его не добавлять & nbsp?

Здесь внизу изображение CKEditor открыто, и вы можете видеть в округленной области, он автоматически добавляет пробел или вкладку в мой код.

Как это остановить?

введите описание изображения здесь

Ответ 1

Взгляните на это сообщение: CKEditor unwanted & nbsp; символы

После некоторых исследований я мог бы пролить свет на этот вопрос - к сожалению, нет готового решения.

В CKEditor есть четыре способа, по которым не может быть места без пробелов (кто-нибудь знает больше?):

Сводка. Чтобы избавиться от всех пробелов, вам необходимо написать дополнительная функция, которая очищает ввод пользователя.

Комментарии и дальнейшие предложения очень ценятся! (Я использую ckeditor 3.6.4)

РЕДАКТИРОВАТЬ № 1

Посмотрите на это.

CKEDITOR.dtd.$removeEmpty.i= 0;

Вы также можете использовать это с помощью span и других тегов.

Документация к этому.

Остановить удаление пустого тега в CKEditor

Существует определенный список тегов, который будет удален, если empty (см. dtd.js и $removeEmpty или запустите CKEDITOR.dtd. $removeEmpty с консоли).

  • Из HTmL

Чтобы убедиться, что пустой тег не удаляется, добавьте атрибут "Данных CKE-выжить:

<span data-cke-survive="true" ></span>
  • Из конфигураций

Или вы можете настроить конкретный тег из не удаляемого:

if(window.CKEDITOR){
            CKEDITOR.on('instanceCreated', function (ev) {
                CKEDITOR.dtd.$removeEmpty['span'] = 0;
                CKEDITOR.dtd.$removeEmpty['TAG-NAME'] = 0;
           }
}

Установив элемент в 0 в CKEDITOR.dtd. $removeEmpty, он предотвращает удаление пустых меток CKEditor.

http://margotskapacs.com/

Ответ 2

Этот раздел может быть полезен fooobar.com/questions/159460/...

Вкратце. Вы можете отключить автоматическое заполнение пустых блоков в конфигурации:

config.fillEmptyBlocks = false;

Дополнительная информация- здесь

UPD.

Вы можете попробовать этот config.protectedSource.push(/<i[^>]*><\/i>/g);

От официальная документация

{Array} CKEDITOR.config.protectedSource Начиная с: 3.0

Список регулярных выражений, которые будут выполняться во входном HTML, указывая исходный код HTML, который при согласовании, не должен быть доступен в режиме WYSIWYG для редактирования.

config.protectedSource.push(/< \? [\ s\S] *? \? > /g);//PHP-код

config.protectedSource.push(/<% [\ s\S] *?% > /g);//ASP-код

config.protectedSource.push(/(] + > [\ s |\S] *? </asp: [^ > ] + > ) | (] +/" > )/gi);//Код ASP.Net

UPD 2

Надеюсь, это поможет.

CKEDITOR.on( 'instanceReady', function( ev )
{
// turn off excess line breaks in html output formatting for blockquote tag.
// In same way you can correct any tag output formating

ev.editor.dataProcessor.writer.setRules( 'blockquote',
{
  indent : false,
  breakBeforeOpen : false,
  breakAfterOpen : false,
  breakBeforeClose : false,
  breakAfterClose : true
});
});

Ответ 3

Для того, кто использует UniSharp/laravel-ckeditor

<script>
  var options = {
    fillEmptyBlocks: false,
  };

  CKEDITOR.replace( 'content', options);
</script>