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();
}
}
我有如下声明的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();
}
}