同时按下两个键后javascript事件的奇怪行为

同时按下两个键后javascript事件的奇怪行为,javascript,events,Javascript,Events,我正在编写一个小javascript应用程序,我需要控制屏幕事件(图像外观)。例如,如果图像_1出现在屏幕上,我需要按一个键(例如右箭头),如果图像_2出现,我需要按另一个键(例如左箭头)。如果两者同时出现,我需要同时按下两个键 问题是,如果我同时按下两个键,则不会启动更多的键事件,我的意思是当下一个图像出现时,我按下一个键,但没有javascript事件 我让代码变得简单,您可以尝试: <html lang="es"> <head> <meta cha

我正在编写一个小javascript应用程序,我需要控制屏幕事件(图像外观)。例如,如果图像_1出现在屏幕上,我需要按一个键(例如右箭头),如果图像_2出现,我需要按另一个键(例如左箭头)。如果两者同时出现,我需要同时按下两个键

问题是,如果我同时按下两个键,则不会启动更多的键事件,我的意思是当下一个图像出现时,我按下一个键,但没有javascript事件

我让代码变得简单,您可以尝试:

<html lang="es">
  <head>
    <meta charset="utf-8">
    <title>Test1</title>
    <script>

    function addE () {
        if (document.addEventListener)  {// standard W3C DO
                document.addEventListener("keydown",test1,false);
        }
    }

    // ejemplo equivalente para quitar el evento
    function removeE () {
        if (document.removeEventListener)  {// standard W3C DOM
                document.removeEventListener("keydown",test1,false);
         }
    }


    function test1 (e) {
        alert('test');
        if (!e) var e = window.event;
        switch (e.keyCode) {
            case 39: 
              alert(e.keyCode);
            break;
            case 37:  
              alert(e.keyCode);
            break;
            default:
              alert(e.keyCode);
        }
    }


    window.onload = function() {
        addE();
        alert('Listener added');
    }

    </script>
  </head>
<body>

</body>
</html>

测试1
函数加法(){
if(document.addEventListener){//标准W3C DO
文件。添加了EventListener(“向下键”,test1,false);
}
}
//Ejempo等效于第二次事件
函数removeE(){
if(document.removeEventListener){//标准W3CDOM
文档.removeEventListener(“keydown”,test1,false);
}
}
功能测试1(e){
警报(“测试”);
如果(!e)var e=window.event;
开关(如钥匙代码){
案例39:
警报(如钥匙代码);
打破
案例37:
警报(如钥匙代码);
打破
违约:
警报(如钥匙代码);
}
}
window.onload=函数(){
addE();
警报(“添加了侦听器”);
}

提前感谢

正如Gonçalo Vieira和Andy E建议的那样,问题不在于我的代码,而在于我使用的调试警报。当更改为更好的调试解决方案console.log()时,一切正常

,您可以看到,如果按任何键,它将显示一个警报,指示您处于“test1”和键代码中。如果你同时按两个键,你会得到:test-test-keycode(1)-keycode(2),然后你可以按任意键,结果一无所获我不会用警报来测试这个。。。同时按下两个键不会做任何事情,因为只有其中一个键(系统读取的第一个键)会触发警报,从而使之后的任何代码都为空(警报基本上阻止任何事情发生),切换到console.log来测试这一点。我同意,如果您需要使用穷人的调试工具,请使用
console.log()
而不是
alert()
。好的,谢谢你的建议,我尝试了使用console.log(),每个事件都可以识别。所以你认为我的问题是使用警报,而没有代码问题?我现在就要在real app中试用,我会让你知道的。谢谢汉克斯,这就是问题所在。Alert()再也不会出现;)我尝试了console.log(),我发现我的代码没有问题。非常感谢。