После утренней борьбы с этим, я наконец нашел способ сделать это!
CKeditor уже предлагает функциональность горячих клавиш (см. Документацию CKeditor ).Используя эту функциональность, мы можем связывать нажатия клавиш с действиями CKeditor.Для сохранения следует добавить следующую строку:
[ CKEDITOR.CTRL + 83 /*S*/, 'save' ],
Однако , при этом будет запущена команда сохранения CKeditor по умолчанию.В моем случае мне нужно выполнить функцию JS, которая отправляет данные CKeditor вместе с другими вещами через AJAX на сервер и оставляет пользователя в той же форме (не выходит).
После просмотра Форумы поддержки CKeditor и после некоторого кодирования я пришел к следующему решению (использую jQuery):
var isCtrl = false;
$('#your_textarea_id').ckeditor(function ()
{
editor.on( 'contentDom', function( evt )
{
editor.document.on( 'keyup', function(event)
{
if(event.data.$.keyCode == 17) isCtrl=false;
});
editor.document.on( 'keydown', function(event)
{
if(event.data.$.keyCode == 17) isCtrl=true;
if(event.data.$.keyCode == 83 && isCtrl == true)
{
//The preventDefault() call prevents the browser's save popup to appear.
//The try statement fixes a weird IE error.
try {
event.data.$.preventDefault();
} catch(err) {}
//Call to your save function
return false;
}
});
}, editor.element.$);
});
Протестировано в Firefox, Chrome и IE8.