Codemirror和Javascript:如何捕获控制键

时间:2015-03-05 05:21:07

标签: javascript codemirror

我将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 尝试保存页面。有没有办法控制这些键的行为超出文本编辑器,运行相同的函数是否焦点在编辑器元素上?

1 个答案:

答案 0 :(得分:1)

恕我直言,试图获得重新加载/保存的特权对最终用户不利,但这是一个可能的解决方案:

    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();
        }
    }