2013-04-05 36 views
0

我正在編寫一個小javascript應用程序,我需要控制屏幕事件(圖像外觀)。例如,如果image_1出現在屏幕上,我需要按一個鍵(例如右箭頭),如果image_2出現,我需要按另一個鍵(例如左箭頭)。如果兩者同時出現,我需要按兩個鍵。在同時按下兩個鍵後的javascript事件的奇怪行爲

問題是,如果我在同一時間按下兩個鍵,那麼不會啓動更多按鍵事件,我的意思是當下一個圖像出現時,我按下一個鍵但沒有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> 

感謝

+0

正如你可以看到,如果你按任意鍵,它會出現一個警告,表明你在「test1」和KeyCode。如果你同時按兩次,你會得到:測試 - 測試 - 鍵碼(1) - 鍵碼(2),然後你可以按任意鍵,你什麼也沒有得到 – DaniG 2013-04-05 10:47:24

+3

我不會用警報來測試這個。 ... 同時按下2個鍵將不會執行任何操作,因爲只有其中一個鍵(系統讀取的第一個鍵)會觸發該警報,從而使之後的任何代碼都爲空(警報基本上阻止任何發生),切換到console.logs來測試。 – 2013-04-05 10:49:47

+0

我同意,如果您需要使用窮人的調試工具,請使用'console.log()'而不是'alert()'。 – 2013-04-05 10:51:23

回答

0

由於貢薩洛·維埃拉和安迪·ê建議我,這個問題是沒有我的代碼,但我用的是調試警報。當更改爲更好的調試解決方案console.log()時,一切正常工作