Вопрос

Есть ли возможность отключить автоматическое включение всего написанного контента в <p></p> в CKEditor 3.x?

Я пытался

  CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;

но это просто меняет встроенные разрывы строк на <br /> при выходе из закрывающего абзаца.

В настоящее время запись «Тест» дает этот результат

<p>
    Test</p>

но я хочу, чтобы это было просто

Test

Есть ли для этого свойство конфигурации или для этого лучше подойдет другой встроенный редактор?

Это было полезно?

Решение

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

Другие советы

По всему Интернету люди заметили, что установление config.enterdemode в 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/Plugin.js, строке 410, где редактор выбирает элемент блока по умолчанию на основе config.entermode. Опция конфигурации для изменения элемента блока по умолчанию позволит нам начать с DIV, но мы будем продолжать получать больше DOV с каждым вводом нажатия, если только мы не изменили формат абзаца через меню.

Видеть: http://docs.cksource.com/ckeditor_api/symbols/src/plugins_wysiwygarea_plugin.js.html

Можно было бы удалить тег упаковки с помощью постобработки (либо на сервере, либо в событии Ckeditor GetData), но это приводит нас к той же проблеме, что и отключение автопарафара: нет блока верхнего уровня.

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

Попробуйте это в 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!)

Сбросьте свой кеш и бам!

Сделайте это вашим кодом файла config.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. Тогда улавливайте дивизион, как вы хотите.

Ckeditor не добавит никакого элемента обертки в следующую отправку, так как у вас есть Div.

(Это решило мою проблему, я использую Drupal и нуждаюсь в небольших фрагментах HTML, которые редактор всегда добавлял дополнительные, но в остальное время я хочу оберток P).

if (substr_count($this->content,'<p>') == 1)
{
  $this->content = preg_replace('/<\/?p>/i', '', $this->content);
}

Сделайте это вашим кодом файла config.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>. Анкет Это очень хорошо, и это выглядит так, как я хочу. В конце концов, это работает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top