Codemirror 和 Javascript:如何捕获控制键

Codemirror and Javascript: how to capture Control Keys

我有如下声明的codemirror:

var editor = CodeMirror.fromTextArea(document.getElementById("editor"), {
                    mode: "text/javascript",
                    extraKeys: {
                        "Ctrl-R": function() { 
                            // do something
                         },
                         "Ctrl-S": function() { 
                            // do something
                         }
                      }
                });

下面的 extraKeys 工作正常,但是当焦点位于编辑器元素中时。如果不是,则Ctrl+R刷新屏幕,Ctrl+S 尝试保存页面。有没有办法在文本编辑器之外控制这些键的行为,以 运行 相同的功能,无论焦点是否在编辑器元素上?

恕我直言,尝试获取 reloading/saving 的特权对最终用户不利,但这里有一个可能的解决方案:

    function editorCtrlR() { ... }

    function editorCtrlS() { ... }

    var editor = CodeMirror.fromTextArea(document.getElementById("editor"), {
      mode: "text/javascript",
      extraKeys: {
            "Ctrl-R": editorCtrlR,
            "Ctrl-S": editorCtrlS
      }
    });

    document.onkeypress = function (event) {
        // detect key pressed
        var key = event.keyCode;
        if (event.ctrlKey) {
            if (key === ('R').charCodeAt(0) - 64) editorCtrlR();
            if (key === ('S').charCodeAt(0) - 64) editorCtrlS();
        }
    }