Как я могу отключить CKEditor, чтобы получить меня каждый раз
, когда я не хочу их? Я использую CKEditor с адаптером jQuery.
Я не хочу иметь теги
.
Как я могу отключить CKEditor, чтобы получить меня каждый раз
, когда я не хочу их? Я использую CKEditor с адаптером jQuery.
Я не хочу иметь теги
.
После некоторых исследований я мог бы пролить свет на эту проблему - к сожалению, не существует готового решения.
В CKEditor есть четыре способа, по которым не может быть места без пробелов (кто-нибудь знает больше?):
Автоматическое заполнение пустых блоков. Это можно отключить в config:
config.fillEmptyBlocks = false;
Автоматическая вставка при нажатии клавиши TAB. Это можно отключить в config:
config.tabSpaces = 0;
Преобразование двоичных пространств в SPACE + NBSP. Это поведение браузера и поэтому не будет исправлено командой CKEditor. Это может быть фиксированный серверный сервер или клиентский javascript onunload. Возможно, этот php является началом:
preg_replace('/\s \s/ig', ' ', $text);
Скопируйте и вставьте. Если вы введете UTF-8 без пробела или двойные пробелы, CKEditor автоматически преобразует его. Единственное решение, которое я вижу здесь, - это регулярное выражение, как указано выше. config.forcePasteAsPlainText = true;
не помогает.
Сводка: Чтобы избавиться от всех пробелов, вам нужно написать дополнительную функцию, которая очищает ввод пользователя.
Комментарии и дальнейшие предложения очень ценятся! (Я использую ckeditor 3.6.4)
Существует другой способ, которым может иметь место разрывный символ пробела. Просто введите пробел в конце предложения.
CKEditor скрывает основные объекты HTML вместе с латинскими и греческими объектами.
Добавьте эти параметры конфигурации, чтобы предотвратить это (вы также можете добавить их в свой файл конфигурации):
CKEDITOR.on( 'instanceCreated', function( event ) {
editor.on( 'configLoaded', function() {
editor.config.basicEntities = false;
editor.config.entities_greek = false;
editor.config.entities_latin = false;
editor.config.entities_additional = '';
});
});
Эти параметры будут препятствовать тому, чтобы CKEditor удалял nbsp gt lt amp ' "
другой латинский и греческий символы.
Источники: http://docs.ckeditor.com/#!/api/CKEDITOR.config http://docs.ckeditor.com/source/plugin48.html#CKEDITOR-config-cfg-basicEntities
Try:
config.basicEntities = false;
для меня исправлена проблема.
в config.js:
CKEDITOR.editorConfig = function( config ) {
config.enterMode = CKEDITOR.ENTER_BR; // <p></p> to <br />
config.entities = false;
config.basicEntities = false;
};
Он работает для меня, после того как вы можете распечатать текст с помощью php: html_entity_decode( $someText )
;
Я заметил, что некоторые операции редактирования текста, такие как удаление символа (нажатием кнопки Backspace), разделяют отредактированный текст node на два. Пробел пробела в конце такого вновь созданного текста node всегда приводит к
вместо нормального пространства. Я вызываю normalize()
http://www.w3schools.com/jsref/met_node_normalize.asp для изменения элемента после изменения:
CKEDITOR.on('instanceReady', function (ck) {
ck.editor.on("change", function (e) {
var sel = ck.editor.getSelection();
if (sel) {
var selected = sel.getStartElement();
if (selected && selected.$)
sel.getStartElement().$.normalize();
}
});
});
У меня были те же проблемы с созданием некоторых таблиц. Я видел, что если я создал таблицы с правилом css align="left"
, добавлен <p> </p>
, но если бы я изменил правило css на align="center"
, я смог бы отредактировать абзацы, и они не были добавлены снова.
Мне уже пришлось играть с config.js, поэтому, чтобы исправить '?' появляясь в сафари, я закончил с 3 строками в config.js
config.fillEmptyBlocks = function (element) {
return true; // DON'T DO ANYTHING!!!!!};
config.entities = false;
config.basicEntities = false;
Если вы используете PHP, вы можете использовать следующее:
preg_replace("/[\<]p[\>][\s]+ [\<][\/]p[\>]/" , " " , $pre_comment);
Это приведет к удалению: "<p> </p>"
Наслаждайтесь:)
Максвелл
Добавьте это в свой config.js
config.enterMode = CKEDITOR.ENTER_BR,