कुंजी कोड फाइंडर

अपने कीबोर्ड पर किसी भी कुंजी को दबाएँ ताकि उसकी JavaScript इवेंट प्रॉपर्टीज़ देखें।

एक कुंजी दबाएँ…

JavaScript में कीबोर्ड इवेंट का 30 साल का इतिहास

अभी तक कोई कुंजी नहीं दबाई गई

यह कैसे काम करता है

  1. एक कुंजी दबाएँ: इनपुट क्षेत्र में क्लिक करें और कोई भी कुंजी दबाएँ, अक्षर, संख्या, फ़ंक्शन कुंजियाँ।
  2. कुंजी कोड पढ़ें: टूल तुरंत event.key, event.code, event.keyCode (पुराना) और charCode मान प्रदर्शित करता है।
  3. अपने कोड में उपयोग करें: अपने कीबोर्ड इवेंट लिसनर या कार्यान्वयन के लिए आवश्यक सटीक मान कॉपी करें।

कीकोड डिटेक्टर क्यों इस्तेमाल करें?

JavaScript कीबोर्ड इवेंट कई विभिन्न गुण उजागर करते हैं (key, code, keyCode, charCode और which) और यह जानना कि कौन सा उपयोग करना है।

विशेषताएँ

अक्सर पूछे जाने वाले प्रश्न

event.key और event.keyCode में क्या अंतर है?

event.key आधुनिक मानक है, यह "ArrowLeft" या "Enter" जैसी पठनीय स्ट्रिंग लौटाता है। event.keyCode एक पुराना संख्यात्मक कोड है।

Ctrl+S या अन्य कुंजी संयोजनों का पता कैसे लगाएँ?

कुंजी संयोजन event.key के साथ मॉडिफ़ायर जाँच का उपयोग करते हैं: if (event.ctrlKey && event.key === "s")। दबाएँ और परीक्षण करें।

कुछ कुंजियाँ समान keyCode क्यों दिखाती हैं?

keyCode मान मानकीकृत नहीं हुए और कुछ कुंजियाँ संदर्भ के आधार पर कोड साझा करती हैं। event.code अधिक विश्वसनीय है।

JavaScript में कीबोर्ड इवेंट का 30 साल का इतिहास

DOM में कीबोर्ड इवेंट्स का बदनाम रूप से अव्यवस्थित इतिहास है। Netscape Navigator 2 (1995) ने मूल onkeydown, onkeypress, और onkeyup हैंडलर्स को एक संख्यात्मक keyCode प्रॉपर्टी के साथ पेश किया, जिसका कोई स्पेक नहीं था; ब्राउज़रों ने प्रत्येक अपने स्वयं के मान बनाए। Internet Explorer 4 (1997) ने अपना स्वयं का संस्करण लागू किया event.keyCode को एकमात्र प्रॉपर्टी के रूप में, जबकि Netscape event.which से चिपका रहा। DOM Level 2 Events (W3C, नवंबर 2000) ने इवेंट फ्लो (कैप्चर/बबल) को मानकीकृत किया, लेकिन कीबोर्ड इवेंट्स को स्पष्ट रूप से इसलिए छोड़ दिया क्योंकि विक्रेता सहमत नहीं हो सकते थे। परिणाम: डेवलपर्स ने एक दशक से अधिक समय तक e.keyCode || e.which जैसा कोड लिखा। DOM Level 3 Events (W3C वर्किंग ड्राफ्ट 2003, अनुशंसा 2018) ने अंत में आधुनिक event.key (Unicode वर्ण या «ArrowLeft» जैसी नामित कुंजी) और event.code (लेआउट से स्वतंत्र भौतिक कुंजी स्थिति जैसे «KeyA») पेश किया, साथ ही keyCode, charCode, और which को बहिष्कृत किया। UI Events स्पेसिफिकेशन (W3C, चालू) इस कार्य का आधुनिक घर है। ब्राउज़र धीरे-धीरे पकड़ में आए: Chrome 51 (मई 2016), Firefox 47 (जून 2016), Safari 10.1 (मार्च 2017) सभी ने event.code समर्थन भेजा। विरासत keypress इवेंट beforeinput और input इवेंट्स के पक्ष में बहिष्कृत है।

5 प्रॉपर्टीज़, डिकोड की गई

कीकोड लुकअप वास्तव में कहाँ मायने रखता है

कीबोर्ड इवेंट हैंडलिंग में सामान्य गलतियाँ

अधिक अक्सर पूछे जाने वाले प्रश्न

जब उपयोगकर्ता के पास गैर-US कीबोर्ड हो तो मेरा कुंजी हैंडलर क्यों फायर नहीं होता?

लगभग हमेशा क्योंकि आप event.key को एक ऐसे वर्ण के लिए जाँच रहे हैं जो उस लेआउट पर केवल Shift के साथ मौजूद है। जर्मन QWERTZ कीबोर्ड पर, «/» Shift+7 है (अपनी कुंजी नहीं); फ्रेंच AZERTY पर, अंक 0-9 Shift+ऊपर-की-पंक्ति के साथ टाइप किए जाते हैं। स्थिति-आधारित शॉर्टकट के लिए event.code (भौतिक कुंजी) का उपयोग करें, या सामग्री-आधारित शॉर्टकट (जहाँ आप वास्तव में चाहते हैं कि उपयोगकर्ता ने अभी जो वर्ण टाइप किया) के लिए event.key

मैं प्लेटफ़ॉर्म पर लगातार Cmd+K / Ctrl+K कैसे संभालूँ?

मानक मुहावरा: if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "k") { e.preventDefault(); openPalette(); }। macOS पर, e.metaKey Cmd कुंजी है; Windows/Linux पर, e.ctrlKey उपयोगकर्ता की अपेक्षा है। दोनों स्वीकार करें। हमेशा preventDefault क्योंकि ब्राउज़र कुछ ब्राउज़रों में Cmd+K को «एड्रेस बार फोकस» से बांधता है। कुंजी-होल्ड पर फायरिंग से बचने के लिए !e.repeat जोड़ें।

क्या JavaScript पृष्ठ के बाहर वैश्विक कीस्ट्रोक्स का पता लगा सकता है?

नहीं, और यह सुरक्षा के लिए डिज़ाइन द्वारा है। ब्राउज़र केवल केंद्रित पृष्ठ या तत्व के लिए कीबोर्ड इवेंट्स फायर करता है। ब्राउज़र एक्सटेंशन chrome.commands API का उपयोग करके व्यापक दायरे के साथ सुन सकते हैं। नेटिव ऐप्स Electron, Tauri आदि में OS-स्तरीय वैश्विक हुक का उपयोग कर सकते हैं। बैंकिंग और 2FA ऐप्स इस अलगाव पर निर्भर करते हैं: एक दुर्भावनापूर्ण टैब आपके पासवर्ड मैनेजर को कीलॉग नहीं कर सकता।

«अभी दबाया» बनाम «पकड़े जा रहा है» का पता लगाने का सही तरीका क्या है?

टॉगल के लिए, keydown हैंडलर में !e.repeat की जाँच करें, पहले इवेंट में repeat: false है, बाद के ऑटो-रिपीट इवेंट्स में repeat: true है। निरंतर क्रियाओं (गेम मूवमेंट) के लिए, सेट में कुंजी स्थिति को ट्रैक करें: keydown पर जोड़ें, keyup पर हटाएँ, फिर अपने रेंडर लूप में keysHeld.has("KeyW") की जाँच करें। यह इनपुट को फ्रेम रेट से अलग करता है और कई एक साथ कुंजियों (हिलाना + कूदना) को संभालता है।

जब मैं यहाँ कुंजियाँ दबाता हूँ तो क्या कुछ सर्वर पर भेजा जाता है?

नहीं। कुंजी इवेंट्स JavaScript द्वारा स्थानीय रूप से कैप्चर किए जाते हैं और बिना किसी नेटवर्क अनुरोध के इस पृष्ठ पर प्रदर्शित किए जाते हैं। DevTools में Network टैब खोलें, टाइप करें; आप शून्य आउटबाउंड ट्रैफ़िक देखेंगे। किसी भी संदर्भ में परीक्षण के लिए सुरक्षित, जिसमें खोजना शामिल है कि आपके कीबोर्ड पर पासवर्ड या संवेदनशील शॉर्टकट क्या उत्पन्न करते हैं।

संबंधित टूल