Отключить вложенные теги в CKEditor 3.0
есть ли возможность отключить автоматическое включение всего письменного контента в пределах
в CKEditor 3.x?
пробовал
CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;
но это просто изменяет встроенные разрывы строк на
, оставляя заключительный абзац.
В настоящее время запись "Test" производит этот вывод
<p>
Test</p>
но я хочу, чтобы это было просто
Test
есть ли свойство конфигурации для этого или другого встроенного редактора лучше подходит для этого?
11 ответов:
CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;- это прекрасно работает для меня. Вы пробовали очистить кэш браузера - это иногда проблема.
Вы также можете проверить это с помощью jQuery адаптер:<script type="text/javascript" src="/js/ckeditor/ckeditor.js"></script> <script type="text/javascript" src="/js/ckeditor/adapters/jquery.js"></script> <script type="text/javascript"> $(function() { $('#your_textarea').ckeditor({ toolbar: 'Full', enterMode : CKEDITOR.ENTER_BR, shiftEnterMode: CKEDITOR.ENTER_P }); }); </script>
обновление согласно комментарию @Tomkay:начиная с версии 3.6 CKEditor вы можете настроить, если вы хотите, чтобы встроенный контент автоматически обертывался тегами, такими как
<p></p>. Это правильно настройка:CKEDITOR.config.autoParagraph = false;источник: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.autoParagraph
через интернет, люди заметили, что настройки конфига.enterMode в CKEDITOR.ENTER_BR удаляет теги оберточных абзацев из CKEditor. Стоит отметить, что настройка изменяет поведение клавиши enter для вставки разрывов строк, а не абзацев, что нежелательно.
см.:http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.enterMode " рекомендуется использовать CKEDITOR.Настройка ENTER_P из-за ее семантического значения и правильность."
однако параметр, предназначенный для удаления этого начального абзаца, config.autoParagraph, также не рекомендуется, так как он вводит "непредсказуемые проблемы юзабилити", потому что редактор действительно требуется элемент блока верхнего уровня.
см.: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.autoParagraph
магия происходит на wysiwygarea / плагин.js, строка 410, где редактор выбирает элемент блока по умолчанию на основе конфигурации.enterMode. Опция конфигурации для изменения элемента блока по умолчанию позволит нам начать с div, но мы будем продолжать получать больше divs с каждым нажатием enter, если мы не изменим формат абзаца через меню.
см.: http://docs.cksource.com/ckeditor_api/symbols/src/plugins_wysiwygarea_plugin.js.html
можно было бы удалить тег оберточного абзаца с последующей обработкой (либо на сервере, либо в событии getData CKEditor), но это приводит нас к той же проблеме, что и отключение autoParagraph: нет блока верхнего уровня.
Я бы скорее сказал, что нет хорошего решения, а скорее несколько полурешений, чем принять изменение конфигурации.enterMode как каноническое решение.
попробуйте это в config.js
CKEDITOR.editorConfig = function( config ) { config.enterMode = CKEDITOR.ENTER_BR; config.shiftEnterMode = CKEDITOR.ENTER_BR; };
нашли его!
ckeditor.js line #91 ... ищите
B.config.enterMode==3?'div':'p'заменить на
B.config.enterMode==3?'div':''(НЕТ P!)сбросьте свой кэш и БАМ!
сделайте это своей конфигурацией.файл JS код
CKEDITOR.editorConfig = function( config ) { // config.enterMode = 2; //disabled <p> completely config.enterMode = CKEDITOR.ENTER_BR // pressing the ENTER KEY input <br/> config.shiftEnterMode = CKEDITOR.ENTER_P; //pressing the SHIFT + ENTER KEYS input <p> config.autoParagraph = false; // stops automatic insertion of <p> on focus };
Я делаю то, что я не горжусь как обходной путь. В моем сервлете Python, который фактически сохраняется в базе данных, я делаю:
if description.startswith('<p>') and description.endswith('</p>'): description = description[3:-4]
отредактируйте источник (или отключите форматированный текст) и замените тег p на div. Затем стиль div любой, какой вы хотите.
ckEditor не будет добавлять элемент оболочки на следующий отправить, как у вас есть div там.
(это решило мою проблему, я использую Drupal и нуждаюсь в небольших фрагментах html, которые редактор всегда добавлял дополнительно, но в остальное время я хочу обернуть тег p).
if (substr_count($this->content,'<p>') == 1) { $this->content = preg_replace('/<\/?p>/i', '', $this->content); }
сделайте это своей конфигурацией.файл JS код
CKEDITOR.editorConfig = function( config ) { // config.enterMode = 2; //disabled <p> completely config.enterMode = CKEDITOR.ENTER_BR // pressing the ENTER KEY input <br/> config.shiftEnterMode = CKEDITOR.ENTER_P; //pressing the SHIFT + ENTER KEYS input <p> config.autoParagraph = false; // stops automatic insertion of <p> on focus };
установить такой конфиг:
CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR CKEDITOR.config.forcePasteAsPlainText = true
в VS2015 это сработало, чтобы превратить клавишу Enter в
<br>myCKEControl.EnterMode = CKEditor.NET.EnterMode.BRлично мне все равно, если мой результирующий текст имеет только
<br>, а не<p>. Он делает совершенно нормально, и это выглядит так, как я хочу. В конце концов, это работает.
Comments