如何禁用ACE编辑器的查找对话框

时间:2012-12-03 05:54:49

标签: javascript html ace-editor

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

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

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

这可以防止正常输入,但不会停止处理 Command + A键

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

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

我已经设置了JSFiddle for this question

3 个答案:

答案 0 :(得分:18)

最好使用'removeCommand'而不是使用'addCommand'和假处理程序

editor.commands.removeCommand('find');

答案 1 :(得分:7)

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的评论编辑

答案 2 :(得分:0)

我不喜欢removeCommand,因为它将命令从菜单中删除;通常,您将允许用户定义自己的密钥,并且 some 用户可能希望将其重新添加。我开始以为我不想使用内置键,但后来我决定它有一些优势。

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

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,则“查找”仍将在命令列表中;它将被禁用,而执行程序仍将在那里。

如果您拥有自己的find函数,则还应该使用addCommand并将逻辑打开以在exec函数中打开find窗口:

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