2010-09-11 14 views
17

Jak powiązać funkcję z wydarzeniami typu down down/down?Zdarzenie kluczowania/zamykania powiązania JavaScriptu

Może być albo powiązany z całym dokumentem, albo z jednym elementem, albo zadziała w tym przypadku.

To musi być bez biblioteki JavaScript. Zajmuję się głównie najnowszym Firefoxem. Zwłaszcza element canvas.

Ive wypróbowany sposób: (FF 3.6.9 Windows 7) tylko

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
    <head> 
     <title>Test</title> 
    </head> 
    <body> 
     <div class="wrapper"> 
      <canvas id="game" width="800" height="400"> 
      </canvas> 
     </div> 
     <script type="text/javascript"> 
      var el = document.getElementById("game"); 

      el.onkeydown = function(evt) { 
       evt = evt || window.event; 
       alert("keydown: " + evt.keyCode); 
      }; 

      el.onkeyup = function(evt) { 
       evt = evt || window.event; 
       alert("keyup: " + evt.keyCode); 
      }; 
     </script> 
    </body> 
</html> 

Odpowiedz

38

Najważniejsze wydarzenia ognia na dokumencie i elementów, które mogą otrzymać ostrość. Dlatego aby obsłużyć kluczowe zdarzenia w elemencie <canvas>, musisz zezwolić mu na otrzymanie fokusu przez dodanie atrybutu tabindex (np. <canvas id="game" width="800" height="400" tabindex="1"></canvas>) lub po prostu obsługa kluczowych zdarzeń dla całego dokumentu, co może nie być tym, czego potrzebujesz (na przykład jeśli na stronie znajduje się więcej niż jeden element, dla którego chcesz obsługiwać kluczowe zdarzenia).

, jak dołączyć obsługi zdarzeń, najprostszym sposobem jest następujący:

var el = document.getElementById("your_element_id"); 

el.onkeydown = function(evt) { 
    evt = evt || window.event; 
    alert("keydown: " + evt.keyCode); 
}; 

el.onkeyup = function(evt) { 
    evt = evt || window.event; 
    alert("keyup: " + evt.keyCode); 
}; 

przypadku może zaistnieć potrzeba wielu słuchaczy, można użyć addEventListener w większości przeglądarek lub attachEvent w IE < = 8:

+0

Nie mogłem tego uruchomić, zobacz edytuj – Petah

+4

To dlatego, że element '' nie może domyślnie otrzymać fokusu. Masz dwie możliwości: możesz dodać atrybut "tabindex" do swojego tagu canvas, aby zezwolić na otrzymanie fokusu lub zamiast tego możesz załączyć klucze obsługi zdarzeń do "dokumentu". –

+0

Dobrze, działa po przypisaniu do dokumentu. – Petah