Ответ 1
Взгляните на это сообщение: CKEditor unwanted & nbsp; символы
После некоторых исследований я мог бы пролить свет на этот вопрос - к сожалению, нет готового решения.
В CKEditor есть четыре способа, по которым не может быть места без пробелов (кто-нибудь знает больше?):
Автоматическое заполнение пустых блоков. Это можно отключить в config:
config.fillEmptyBlocks = false;
Автоматическая вставка при нажатии клавиши TAB. Это можно отключить в config:
config.tabSpaces = 0;
Преобразование двоичных пространств в SPACE + NBSP. Это поведение браузера и, следовательно, не будет исправлено командой CKEditor. Он может быть исправлен serveride или клиентским javascript onunload. Возможно, этот php является старт:
preg_replace('/\s \s/i', ' ', $text);
Скопируйте и вставьте. Если вы введете UTF-8 без пробелов или двойные пробелы, CKEditor автоматически преобразует его. Единственный Решение, которое я вижу здесь, выполняет регулярное выражение, как указано выше.
config.forcePasteAsPlainText = true;
не помогает.Сводка. Чтобы избавиться от всех пробелов, вам необходимо написать дополнительная функция, которая очищает ввод пользователя.
Комментарии и дальнейшие предложения очень ценятся! (Я использую 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.