2013-11-27 31 views
1

如果组合Alt + [Key]没有固定的动作,则蜂鸣器响起。例如如何在Alt + [Key]中禁用Chrome中的蜂鸣声?

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/,那么它可以是固定的?

+0

您是否尝试过'e.cancelBubble = TRUE;','e.returnValue = FALSE;'和'e.stopImmediatePropagation();'?并且使函数'return false;'。 – OlivierH

+0

以不同的方式 - 是的,但没有结果 – kaf

+0

我刚刚发现一个脚本,我写了一个脚本来替换自定义keydown处理程序的accesskey属性。唯一的区别是我使用jQuery来完成它:'$(document).bind('keydown',keyDownHandler);',并且我把焦点放在处理程序中的另一个元素上(我做了类似'jQuery ( '#my_element')点击();')。你可以用jQuery来尝试它,然后在你的处理程序中集中另一个元素? – OlivierH

回答

0

这是一个与浏览器的错误。拨打preventDefault()应该确实停止嘟嘟声,但它不会。 https://bugs.chromium.org/p/chromium/issues/detail?id=105500

为了抑制在Chrome中,你可以用accesskey属性添加锚点到您的DOM,accesskey是按与Alt按键提示音。

所以对于你的榜样(Alt + Z),你要补充:

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

要尝试一下,你可以运行在您的控制台以下:

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

注资“ K'in accessKey当您引用javascript中的属性时。

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

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