2

我的网站上有一个文本编辑器,我希望用户能够使用键盘快捷键进行保存,就像他们在 Microsoft Word 中一样:

  • 对于 Mac:Cmd+S
  • 对于电脑:Ctrl+S

在 jQuery 中完成此任务的最佳方法是什么?此外,这将用于在使用 iFrame 的 CKEditor 中保存内容,不确定这是否是一个问题。

4

2 回答 2

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' ]
];
于 2009-12-30T00:15:52.587 回答
0

在 Mac 上,要捕获 CMD-s,请将事件处理程序分配给编辑器,如下所示:

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

在我的示例中,我正在调用我的save()函数。

于 2016-11-24T09:54:42.287 回答