Отключить вложенные теги в CKEditor 3.0



есть ли возможность отключить автоматическое включение всего письменного контента в пределах


в CKEditor 3.x?

пробовал



  CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;


но это просто изменяет встроенные разрывы строк на
, оставляя заключительный абзац.



В настоящее время запись "Test" производит этот вывод



<p>
Test</p>


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



Test


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

674   11  

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

    Ничего не найдено.