【问题标题】:How to disable beep in Chrome on Alt + [Key]?如何在 Alt + [Key] 上禁用 Chrome 中的哔声?
【发布时间】:2026-01-09 22:55:02
【问题描述】:

如果组合 Alt+[Key] 没有固定动作,则蜂鸣器响起。例如

document.onkeydown = function(e){
    if(e.altKey && e.keyCode == 90){ // Alt+Z pressed
        e.preventDefault();
        e.stopPropagation();
        console.log('Alt+Z pressed');
    }
};

有效,但有哔声。如何预防?

Alt+Z 和其他一些键的正确示例 - http://en.wikipedia.org/wiki/,那么它可以修复吗?

【问题讨论】:

  • 你试过e.cancelBubble = true;e.returnValue = false;e.stopImmediatePropagation();吗?并制作函数return false;
  • 以不同的方式 - 是的,但没有结果
  • 我刚刚找到了一个我编写的脚本,用于用自定义 keydown 处理程序替换 accesskey 属性。唯一的区别是我使用 jQuery 来执行此操作:$(document).bind('keydown', keyDownHandler);,并且我将焦点设置在处理程序中的另一个元素上(我执行类似jQuery('#my_element').click(); 的操作)。你能用 jQuery 试试,然后在你的处理程序中关注另一个元素吗?
  • 如果焦点在地址栏中 - 哔声关闭,但如果在页面上的 INPUT - 哔声

标签: javascript google-chrome events keyboard-shortcuts


【解决方案1】:

这是 Chrome 的一个错误。调用preventDefault() 应该真的停止哔哔声,但它没有。 https://bugs.chromium.org/p/chromium/issues/detail?id=105500

要抑制 Chrome 中的蜂鸣声,您可以向 DOM 添加具有 accesskey 属性的锚点,其中 accesskey 是您使用 Alt 按下的键。

因此,对于您的示例 (Alt+Z),您需要添加:

<a accesskey="Z"></a>

要试用它,您可以在控制台中运行以下命令:

var anc = document.createElement('a'); anc.accessKey='Z'; document.body.appendChild(anc);

当您在 javascript 中引用该属性时,请注意 accessKey 中的大写“K”。

accesskey 属性:http://www.w3schools.com/tags/att_accesskey.asp

accessKey 属性:http://www.w3schools.com/jsref/prop_html_accesskey.asp

【讨论】:

    最近更新 更多