Вложенные элементы span CKEditor 4 удаляются после инициализации встроенного редактирования

0

У меня есть div, который является contenteditable = true. Когда я дважды щелкните по нему, я запускаю этот код встроенного редактирования в CKEditor, и он успешно отображает панели инструментов CKEditor

 $("#content_id").attr("contenteditable", true);
 ckeditor_instance = CKEDITOR.inline( content_id );

Теперь у меня есть плагин LineHeight и LetterSpacing, который выглядит как выпадающий список на панели инструментов CKEditor (плагин, сделанный другими, который я копировал только для реализации), и возникает проблема, когда я устанавливаю LineHeight и LetterSpacing текста и повторно инициализую cceditor

Чтобы было ясно, вот сценарий:

Это html по умолчанию для div

<div id="mycontent" contenteditable=true>
    <span>The quick brown fox jumps over the lazy dog</span>
</div>

1. Когда я дважды щелкните div, я запускаю код CKEDITOR.inine(content_id), упомянутый выше. Когда я устанавливаю LetterSpace, чтобы сказать, что 6px, div теперь похоже на это, что правильно

<div id="mycontent" contenteditable=true>
    <span style="letter-spacing:6px;">
        <span>The quick brown fox jumps over the lazy dog</span>
    </span>
</div>

2. Когда я устанавливаю LineHeight, скажем, 2px, div теперь выглядит следующим образом:

 <div id="mycontent" contenteditable=true>
    <span style="line-height:2px;">
        <span style="letter-spacing:6px;">
            <span>The quick brown fox jumps over the lazy dog</span>
        </span>
    </span>
 </div>

Все отлично работает здесь до следующего сценария:

3. Я выхожу из div, я вызываю этот код, который уничтожит экземпляр.

$("#content_id").attr("contenteditable", false);
CKEDITOR.instances[content_id].destroy();

4. Я снова дважды щелкните div и я снова инициализирую код выше CKEDITOR.inine(content_id), и теперь html будет таким, как это

<div id="mycontent" contenteditable=true>
    <span>The quick brown fox jumps over the lazy dog</span>
</div>

Div возвращается в исходное состояние и удаляются промежутки с разметкой букв и высотой строки.

Кто-нибудь испытал что-то подобное?

Теги:
ckeditor
inline

1 ответ

0

После нескольких часов проб и ошибок, благодаря Рейнмару, который дал мне эти документы: http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter и привел меня сюда http://docs.ckeditor.com/#!/апи /CKEDITOR.config-CFG-allowedContent

Сейчас все отлично работает.

Из

$("#content_id").attr("contenteditable", true);
ckeditor_instance = CKEDITOR.inline( content_id );

к

$("#content_id").attr("contenteditable", true);
ckeditor_instance = CKEDITOR.inline( content_id, {
  allowedContent : true
});

Это работает как шарм, и я не уверен, почему. Я просто установил allowContent в true, поскольку в документации он говорит:

true - отключит фильтр (данные не будут отфильтрованы, все функции будут активированы)

Надеюсь, для этого не будет никаких побочных эффектов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню