CKeditor: Как сбалансировать теги HTML при сохранении?(они балансируют на нагрузке) - PullRequest
0 голосов
/ 06 июня 2018

У меня возникли проблемы, когда кто-то может вставить код из другого места в CKeditor, оставить открытые теги HTML или включить закрывающие теги, которых там быть не должно.

Я замечаю это, когда представление изменяется из Sourceдля HTML теги сбалансированы.Так что это происходит при загрузке, и когда Source переключается, но не при сохранении.

Чтобы увидеть это в действии, просмотрите Source, введите некоторый HTML-код с открытым тегом, но без соответствующего закрывающего тега, просмотрите версию HTML,просмотр Source - он исправлен.

Даже если это означает быстрое переключение на Source, а затем в HTML, как я могу запустить балансировку этого тега при сохранении?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Я не уверен, что это правильный подход.Когда я проверяю кнопку Source, она вызывает функцию CKEDITOR.tools.callFunction(52, this);.

. И поскольку после переключения в режим предварительного просмотра из HTML-разметки редактор автоматически закрывает теги, перед сохранением вы можете переключиться в режим предварительного просмотра.заставить его закрыть открытые теги.

var editor = CKEDITOR.replace( 'editor1', {} );

var isSourceOn = false;

function saveMyEditor() {
  if(isSourceOn)
    CKEDITOR.tools.callFunction(52, this);
}

editor.on('instanceReady', function( event ){    
  editor.on( 'mode', function( evt ){
    if(editor.mode != 'source') {
      isSourceOn = false;
    } else {
      isSourceOn = true;
    }
  });
});

Ссылка на Codepen

Редактировать: Можете ли вы попробовать это:

var editor = CKEDITOR.replace( 'editor1', {} );
editor.commands.source.exec();

Это переключениеКнопка источника правильно.Поэтому перед сохранением вы можете переключиться в режим предварительного просмотра, а затем сохранить.Так что это закроет теги.

0 голосов
/ 06 июня 2018

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

var editor = CKEDITOR.replace( 'editor1', {

} );

editor.on('instanceReady', function( event ){
  var submitBut = document.getElementById('my-submit'),
      submitWarn = document.getElementById('submit-warn');

  editor.on( 'mode', function( evt ){
    if( editor.mode == 'source') {
      submitBut.disabled = true;
      submitWarn.style.display = 'inline';
    } else{
      submitBut.disabled = false;
      submitWarn.style.display = 'none';
    }          
  });
})

предварительный просмотр на codepen

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...