如何在keydown获得第一个选择(防止显示“添加书签”对话框)

我的jQuery应用程序中有一个复选框,您可以检查复制

。 我现在想为操作创建一个Ctrl + D快捷方式。 我可以通过以下方式感知Ctrl + D

 $(document).on('keydown',function(e) { debugger; if((e.keyCode == 68) && e.ctrlKey){ $('.duplicate').trigger('click'); } }); 

但看起来Firefox首先捕获Ctrl + D并设置“编辑书签”对话框

我怎么能先得到中断,然后当我完成后我会杀掉它? 我不希望我的用户每次进入Ctrl + D时都必须关闭Firefox对话框。

尝试使用e.preventDefault();

 $(document).on('keydown',function(e) { //debugger; if((e.keyCode == 68) && e.ctrlKey){ $('.duplicate').trigger('click'); e.preventDefault(); } }); 

在此处查看演示页面 (在此处编辑演示)。

另一方面,覆盖广为人知的键/命令并不是一个好的可用性实践 。 虽然你可以实现这一点,但建议使用另一种密钥组合。

你试过e.preventDefault();

或者更好的选择 – 选择不同的组合。 当您开始搞乱其键绑定时,用户通常不喜欢它。 在许多网站上(想到trello和github),根本就没有控制键。 您可以通过键入单个字符来调用特殊function(在github“t”上打开一个页面,您可以在其中键入文件名,它将过滤存储库中的文件)。 在大多数情况下应该没问题。 您通常不需要能够在html body上键入内容。 在发布function之前,您只需要确保它们不在输入或文本区域内。