#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… по крайней мере, в фокусе или настройках…