CKEditor break <div>
CKEditor отлично работает. Есть только незначительная вещь, которую я хотел бы улучшить.
У нас есть система сообщений, которая использует CKEditor. Оригинальный (старый) текст имеет вертикальную синюю линию. Смотрите скриншот:
![введите описание изображения здесь]()
Я хотел бы сломать <div>
.
До сих пор я не нашел возможности разбить его.
В моем случае клавиша RETURN должна разорвать <div>
.
Ответы
Ответ 1
Вы можете настроить ключ ввода в следующих режимах:
- ENTER_P - создаются новые
<p>
абзацы;
- ENTER_BR - строки разбиты с помощью элементов
<br>
;
- ENTER_DIV - создаются новые
<div>
блоки.
Итак, в вашем случае, чтобы разбить div:
CKEDITOR.replace( 'textarea_id', {
enterMode: CKEDITOR.ENTER_DIV
});
Вот документы для ENTER_BR
Ответ 2
Если настройка enterMode = CKEDITOR.ENTER_DIV
не работает для вас, другим решением является захват нажатия клавиши enter
и ручная разбивка div
на:
1), вставляя закрывающий тег </div>
, чтобы разделить синюю линию div
, создав верхнюю половину.
2), вставив новый тег <div class="novertline">
, который открывает div без вертикальной линии. Это разрыв.
3) вставьте закрытие </div>
4) вставьте еще один, который заставляет нижнюю половину разделенного текста сохранить свою вертикальную линию.
Поскольку insertHtml
не разрешает разделение div, я использовал insertText
с флагом, чтобы впоследствии заменить его на html
.
CKEDITOR.instances.textarea.on( 'key', function (evt) {
if (evt.data.keyCode == 13){
CKEDITOR.instances.textarea.insertText('SOME FLAG');
var data = CKEDITOR.instances.textarea.getData();
data = data.replace('SOME FLAG', '</div><div class="novertline"></div><div class="vertline">');
CKEDITOR.instances.textarea.setData(data);
}
});
В моем файле ckeditor.css
я добавил два моих класса - но у вас, очевидно, уже есть свой эквивалентный класс div
, который создает синюю строку:
.vertline {
margin-left: 10px;
border-left: 1px solid blue;
height: 100%;
}
.novertline {
margin-left: 10px;
border-left: none;
height: 100%;
}
Это нужно будет настроить для вашей ситуации. Однако он разбивает div
по мере необходимости.