2010-09-11 18 views
17

मैं कुंजी डाउन/अप ईवेंट में फ़ंक्शन कैसे बांधूं?जावास्क्रिप्ट बाइंड कीप/डाउन इवेंट

इसे या तो पूरे दस्तावेज़ या एक तत्व से जोड़ा जा सकता है, या तो इस मामले में काम करेगा।

यह किसी भी जावास्क्रिप्ट पुस्तकालय के बिना होना चाहिए। मैं केवल मुख्य रूप से नवीनतम फ़ायरफ़ॉक्स से चिंतित हूं। विशेष रूप से कैनवास तत्व। दस्तावेज़ और तत्वों है कि फोकस प्राप्त हो सकता है पर (एफएफ 3.6.9 विंडोज 7) केवल

<!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> 

उत्तर

38

प्रमुख घटनाओं आग:

Ive यह कोशिश की। इसलिए <canvas> तत्व पर महत्वपूर्ण घटनाओं को संभालने के लिए, आपको या तो tabindex विशेषता (उदाहरण के लिए <canvas id="game" width="800" height="400" tabindex="1"></canvas>) जोड़कर या पूरे दस्तावेज़ के लिए महत्वपूर्ण घटनाओं को संभालने से फ़ोकस प्राप्त करने की अनुमति देने की आवश्यकता है, जो कि आप जो चाहते हैं वह हो सकता है (उदाहरण के लिए, यदि आपके पास उस पृष्ठ पर एक से अधिक तत्व हैं जिसके लिए आप महत्वपूर्ण घटनाओं को संभालना चाहते हैं)। = 8

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); 
}; 

आप एक से अधिक श्रोताओं की आवश्यकता हो सकती हैं, तो आप IE < में सबसे ब्राउज़रों में addEventListener या attachEvent उपयोग कर सकते हैं:

कैसे ईवेंट हैंडलर्स संलग्न करने के लिए के रूप में, सबसे आसान तरीका निम्न है

if (typeof el.addEventListener != "undefined") { 
    el.addEventListener("keydown", function(evt) { 
     alert("keydown: " + evt.keyCode); 
    }, false); 
} else if (typeof el.attachEvent != "undefined") { 
    el.attachEvent("onkeydown", function(evt) { 
     alert("keydown: " + evt.keyCode); 
    }); 
} 
+0

मुझे यह काम नहीं मिल सका, – Petah

+4

संपादित करें ऐसा इसलिए है क्योंकि '' तत्व डिफ़ॉल्ट रूप से फ़ोकस प्राप्त नहीं कर सकता है। आपके पास दो विकल्प हैं: या तो आप अपने कैनवास टैग में 'टैबिंडेक्स' विशेषता जोड़ सकते हैं ताकि इसे फोकस प्राप्त हो सके या आप कुंजी ईवेंट हैंडलर को 'दस्तावेज़' में संलग्न कर सकते हैं। –

+0

ठीक है, यह दस्तावेज़ को सौंपा गया है जब यह काम करता है। – Petah

संबंधित मुद्दे