我的网站上有一个文本编辑器,我希望用户能够使用键盘快捷键进行保存,就像他们在 Microsoft Word 中一样:
- 对于 Mac:Cmd+S
- 对于电脑:Ctrl+S
在 jQuery 中完成此任务的最佳方法是什么?此外,这将用于在使用 iFrame 的 CKEditor 中保存内容,不确定这是否是一个问题。
您知道 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' ]
];
在 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()
函数。