目前,每当在ace编辑器中按下任何键时,我都会通过以下javascript代码捕获键盘事件:
editor.keyBinding.addKeyboardHandler({
handleKeyboard: function(data, hash, keyString, keyCode, event) {
console.log(ketString)
...
}
问题是正在调用处理程序函数
两次
每次在ace编辑器中按下一个键,但我希望它被调用一次。有什么想法吗?
编辑
根据@MichaelGeary的反馈,我添加了一个控制台。每次调用键盘处理程序时,我都会跟踪ace中两个位置的调用。js代码:
this.onCommandKey = function(e, t, n) {
var i = r.keyCodeToString(n);
this.$callKeyboardHandlers(t, i, n, e) <-----------
}
,
this.onTextInput = function(e) {
this.$callKeyboardHandlers(-1, e) <-----------
}
问题是,为什么
onCommandKey
和
onTextInput
两者都被触发了?