Как прослушивать базовые события в CKEditor?

#javascript #html #ckeditor

#javascript #HTML #ckeditor

Вопрос:

Я не могу понять, как прослушивать focus, click, onKeyUp и другие базовые события dom в ckeditor. В сводке событий есть только несколько событий, касающихся жизненного цикла ckeditor. И «текстовая область» ckeditor — это iframe, и это сам html, поэтому неясно, на каком dom-узле прослушивать.

Ответ №1:

Это не имеет большого значения, просто сделайте следующее, работает для фокусировки, размытия, щелчка и т.д.

 var ckeditor = CKEDITOR.instances['textArea_id'];
ckeditor.on('focus', fnHandler, context, data, priority);
  

или пример jQuery :

 $(document).ready(function () {
    $('#YOUR_TEXTAREA_ID').ckeditor(ckeditor_config);

    CKEDITOR.instances.YOUR_TEXTAREA_ID.on('blur', fnHandler);
});
  

Я не знаю, когда появилась эта поддержка, но она определенно работает для 3.5.x

Комментарии:

1. Отлично, это работает… Я такой мудак, что не попробовал это, прежде чем спрашивать. Я где-то читал, что это невозможно сделать. Спасибо, чувак

Ответ №2:

CKEditor на самом деле имеет встроенную обработку событий в объекте. Смотрите эту статью для объяснения:http://alfonsoml.blogspot.com/2009/09/ckeditor-events.html

Итак, чтобы перехватить изменение в экземпляре CKEditor, вы могли бы сделать это:

 CKEDITOR.on('currentInstance', function(){modified = true;});
  

Кроме того, похоже, что в версию 3 встроен более простой процессор обработки событий: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.ui.dialog.file.html#eventProcessors

CK немного запутан, и в документации есть пробелы, но, основываясь на его способности изящно обрабатывать HTML, сгенерированный Word, я голосую за него как за лучший вариант.

Комментарии:

1. У меня не работает currentInstance, версия ckeditor 3.5.2… по крайней мере, в фокусе или настройках…