【问题标题】:Keydown event on Ace EditorAce Editor 上的 Keydown 事件
【发布时间】:2015-01-20 11:14:38
【问题描述】:

在这个了不起的编辑器 (Ace: Code Editor) 上,有一种方法可以让我获得 on change 事件,是否有 on keydown 事件?或者我可以模拟它的 hack?

【问题讨论】:

    标签: javascript ace-editor


    【解决方案1】:

    没有keydown事件,可以在editor.textInput.getElement()返回的textarea上添加keydown事件监听,但更好的方法是使用editor.commands.addCommand

    editor.commands.addCommand({
        name: "...",
        exec: function() {},
        bindKey: {mac: "cmd-f", win: "ctrl-f"}
    })
    

    editor.keyBinding.addKeyboardHandler

    【讨论】:

    • 是的,我最终使用了编辑器返回的文本元素...谢谢。
    • 使用 editor.textInput.getElement() 看起来很简单而且效果很好。
    • “更好”取决于你需要做什么——如果你想添加一个命令那么 addCommand 更好,如果你想要一个 keydown 事件它不是
    【解决方案2】:

    我在the documentation 中找不到它,但是在this discussion 中,我发现了editor.commands.on('afterExec', ...) API:

    editor.commands.on('afterExec', eventData => {
        if (eventData.command.name === 'insertstring') {
            console.log('User typed a character: ' + eventData.args);
        }
    });
    

    afterExec 在编辑器中的每个 command 上触发。 命令 包括诸如键入文本、在 ctrl+空格 上显示完成弹出窗口等操作...

    它不是 keydown 事件的直接模拟,但它是我来这里时搜索的东西,所以希望你会发现它很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-26
      • 2023-03-10
      • 2017-07-25
      相关资源
      最近更新 更多