Сочетания клавиш JQUERY — Command+S, Control+S

У меня на сайте есть текстовый редактор, и я хочу, чтобы пользователи могли использовать сочетания клавиш для сохранения, как в Microsoft Word:

  • Для Mac: Cmd+S
  • Для ПК: Ctrl+S

Каков наилучший способ сделать это в jQuery? Кроме того, это будет использоваться для сохранения контента в CKEditor, который использует iFrame, не уверен, проблема это или нет.


person AnApprentice    schedule 29.12.2009    source источник
comment
Это может быть полезно: docs.cksource.com/ckeditor_api/symbols/ Класс CKEDITOR.keystrokeHandler   -  person AnApprentice    schedule 30.12.2009


Ответы (2)


Вы знаете, что в CKEditor есть встроенная функция горячих клавиш?

Это довольно просто реализовать: вы настраиваете массив keystrokes в своем массиве конфигурации; взять пример массива по ссылке выше; Найдите комбинацию клавиш для «S»; и измените массив записью для него и соответствующей командой CKEditor. Я не могу проверить это прямо сейчас, но это то, как это должно выглядеть. Возможно, вам придется найти соответствующую команду для операции «сохранения», которую вы хотите выполнить.

... your config array .....

CKEDITOR.config.keystrokes = 
[
    [ CKEDITOR.ALT + 121 /*F10*/, 'toolbarFocus' ],
    [ CKEDITOR.ALT + 122 /*F11*/, 'elementsPathFocus' ],

    [ CKEDITOR.SHIFT + 121 /*F10*/, 'contextMenu' ],

    [ CKEDITOR.CTRL + 90 /*Z*/, 'undo' ],
    [ CKEDITOR.CTRL + 89 /*Y*/, 'redo' ],
    [ CKEDITOR.CTRL + CKEDITOR.SHIFT + 90 /*Z*/, 'redo' ],

    [ CKEDITOR.CTRL + 76 /*L*/, 'link' ],

    [ CKEDITOR.CTRL + 66 /*B*/, 'bold' ],
    [ CKEDITOR.CTRL + 73 /*I*/, 'italic' ],
    [ CKEDITOR.CTRL + 85 /*U*/, 'underline' ],

    [ CKEDITOR.CTRL + 83 /*S*/, 'save' ],

    [ CKEDITOR.ALT + 109 /*-*/, 'toolbarCollapse' ]
];
person Pekka    schedule 30.12.2009
comment
Да, но нет документации, как это реализовать? - person AnApprentice; 30.12.2009
comment
Как насчет клавиши COMMAND для Mac? - person Shamoon; 29.04.2011

На Mac для захвата CMD-ов назначьте редактору обработчик событий следующим образом:

CKEDITOR.instances['editor1'].on('key', function (evt) {
    console.log(evt.data.keyCode)
    //cmd-s - save
    if (evt.data.keyCode == 1114195) {
        evt.cancel();
        save();
    }    
});

В моем примере я вызываю свою функцию save().

person Brian    schedule 24.11.2016