【问题标题】:How to disable ACE Editor's Find Dialog如何禁用 ACE 编辑器的查找对话框
【发布时间】:2012-12-03 05:54:48
【问题描述】:

我想禁用 ACE 编辑器的查找对话框,该对话框通过按 调用 Command + F 编辑器有焦点时的组合键。

我尝试了以下(除其他外):

document.body.onkeydown = 
document.body.onkeyup = 
document.body.onkeypress = function(event) {      
    return false;
};

这会阻止一个人能够正常打字,但不会阻止 Command + A key 被处理。

如何防止Command + F组合被处理?

理想情况下,我希望能够仅阻止 Command + F 组合,因为我想继续使用另一个 Command 键组合。

我已经设置了JSFiddle for this question

【问题讨论】:

  • 我认为您的做法是错误的。您应该尝试禁用查找对话框,而不是快捷键。

标签: javascript html ace-editor


【解决方案1】:

最好使用“removeCommand”而不是使用带有假处理程序的“addCommand”

editor.commands.removeCommand('find');

【讨论】:

    【解决方案2】:

    Andrei Andrushkevich's answer 现在是一个更好、更简单的解决方案。


    您可以使用editor.commands.addCommand 重新定义与快捷方式关联的命令,然后只提供一个空函数。此自定义定义将优先于内置定义。在这种情况下:

    editor.commands.addCommand({
        name: "unfind",
        bindKey: {
            win: "Ctrl-F",
            mac: "Command-F"
        },
        exec: function(editor, line) {
            return false;
        },
        readOnly: true
    })
    

    这是updated JSFiddle。我没有找到明确的文档,但是 here's the editor.commands definitionhere's where .addCommands() is。 (注意:自编写此答案以来,代码可能已更改。)

    根据 jcubic 的评论编辑

    【讨论】:

    • 就是这样!非常感谢!面对自己没有想到这个自己。
    【解决方案3】:

    我不喜欢 removeCommand 因为它会从菜单中删除它;通常你会允许用户定义他们自己的密钥,一些用户可能想要重新添加它。我开始以为我不想使用内置的,但后来我决定它有一些优点。

    您只需清除绑定键即可禁用它。你可以这样做:

    var find = editor.commands.byName['find'];
    find.bindKey = {};
    editor.commands.addCommand(find);
    

    这将完成你也可以做的很长的路:

    editor.commands.addCommand({
        name: 'find',
        bindKey: {},
        exec: editor.commands.byName['find'].exec
    });
    

    这样,如果您有一个 GUI 供用户设置自己的键绑定,“查找”仍将在命令列表中;它只会被禁用,而 exec 仍然会在那里。

    如果你有自己的 find 函数,你也应该使用 addCommand 并将打开你的 find 窗口的逻辑放在 exec 函数中:

    editor.commands.addCommand({
        name: 'find',
        bindKey: { win:'Ctrl-F',mac:'Ctrl-F'},
        exec: function(){
            alert("My Function Here");
            openMyFinderModal();
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2012-10-04
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 2021-07-23
      • 2012-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多