Как разрешить все html-теги и атрибуты с помощью CKeditor?
Я пытаюсь разрешить все теги html
<div> <p> <span> <i> /* etc */
и html-атрибуты, как показано ниже (класс, id), например:
<div id="foo" class="bar" style="z-index:1;">SOME COOL CONTENT HERE</div>
в ckeditor.
Я нашел что-то вроде docs.ckeditor.com
config.allowedContent = {
$1: {
// Use the ability to specify elements as an object.
elements: CKEDITOR.dtd,
attributes: true,
styles: true,
classes: true
}
};
config.disallowedContent = 'script; *[on*]';
и добавил его в config.js
в корневую папку ckeditor. Но ничего не изменилось. Когда я пытаюсь добавить некоторые html-теги в блоке исходного кода ckeditor, он удаляет все содержимое html.
Что мне не хватает? Заранее спасибо.
Версия: ## CKEditor 4.4.7
EDIT & UPDATE:
После ответов @Eelke и @Necreaux я добавил allowedContent = true
в свой config.js. Теперь основные элементы html, такие как <div> <span> <h3>
работают отлично. Но ckeditor все еще разделяет теги <i>
.
Полностью Конфигурация JS
CKEDITOR.editorConfig = function( config ) {
config.allowedContent = true;
config.removeFormatAttributes = '';
// Define changes to default configuration here.
// For complete reference see:
// http://docs.ckeditor.com/#!/api/CKEDITOR.config
// The toolbar groups arrangement, optimized for two toolbar rows.
config.toolbarGroups = [
{ name: 'clipboard', groups: [ 'clipboard', 'undo' ] },
{ name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ] },
{ name: 'links' },
{ name: 'insert' },
{ name: 'forms' },
{ name: 'tools' },
{ name: 'document', groups: [ 'mode', 'document', 'doctools' ] },
{ name: 'others' },
'/',
{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
{ name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ] },
{ name: 'styles' },
{ name: 'colors' },
{ name: 'about' }
];
// Remove some buttons provided by the standard plugins, which are
// not needed in the Standard(s) toolbar.
config.removeButtons = 'Underline,Subscript,Superscript';
// Set the most common block elements.
config.format_tags = 'p;h1;h2;h3;pre;';
// Simplify the dialog windows.
config.removeDialogTabs = 'image:advanced;link:advanced';
};
Ответы
Ответ 1
Во-первых, почему некоторые элементы, атрибуты, стили и классы удаляются независимо от их содержимого. Это вызвано расширенным фильтром содержимого. См. Этот вопрос для получения дополнительной информации о том, как изменить его настройки: CKEditor автоматически разбивает классы из div
Другое дело, почему пустые встроенные элементы удаляются независимо от того, разрешены они или нет. Этот вопрос также был задан - см. CKEditor strip <i> Tag - отметьте там еще один хороший ответ.
Ответ 2
Если все разрешено, вы можете использовать allowedContent = true
Ответ 3
Вы пробовали следующее?
config.allowedContent = true;
config.removeFormatAttributes = '';
Ответ 4
это теги, которые CKEditor 4 удаляет, когда пуст:
abbr, acronym, b, bdi, bdo, big, cite, code, del, dfn, em, font, i, ins, label, kbd, mark, meter, output, q, ruby, s, samp, small, span, забастовка, сильная, суб, суп, время, tt, u, var
чтобы разрешить все пустые теги - попробуйте добавить это в config.js:
for(var tag in CKEDITOR.dtd.$removeEmpty){
CKEDITOR.dtd.$removeEmpty[tag] = false;
}
Ответ 5
Вы пробовали это?
<script>
CKEDITOR.replace( 'text-area-id' );
CKEDITOR.config.allowedContent = true;
</script>