Отключить вшита теги в 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, где редактор выбирает элемент блока по умолчанию, основанный на config.enterMode. Опция config для изменения элемента блока по умолчанию позволит нам начать с 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 #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>
. Это делает совершенно прекрасным, и это выглядит так, как я хочу. В конце концов, это работает.