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