Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> HTML

HTML KeyboardEvent which प्रॉपर्टी: यूनिकोड कैरेक्टर कोड प्राप्त करें


HTML KeyboardEvent.which प्रॉपर्टी उस कुंजी का यूनिकोड कैरेक्टर कोड लौटाती है जिसने onkeypress, onkeydown, या onkeyup इवेंट ट्रिगर किया। नोट: यह प्रॉपर्टी निरस्त (deprecated) है; आधुनिक कोड में event.key (कैरेक्टर के लिए) या event.code (भौतिक कुंजी के लिए) का उपयोग करें।

सिंटैक्स (Syntax)

event.which

उदाहरण (Example)

यह उदाहरण टाइप किए गए वर्णों के यूनिकोड कोड दिखाता है।

<!DOCTYPE html>
<html>
<head>
  <style>
    body {
      color: #000;
      height: 100vh;
      background: linear-gradient(62deg, #FBAB7E 0%, #F7CE68 100%) no-repeat;
      text-align: center;
      font-family: Arial, sans-serif;
    }
    input {
      border: 2px solid #fff;
      padding: 12px;
      background: transparent;
      width: 310px;
      border-radius: 20px;
      outline: none;
      font-size: 1.2rem;
      text-align: center;
    }
    input:focus { border-color: #db133a; }
    ::placeholder { color: #666; }
    .show {
      font-size: 1.2rem;
      color: #fff;
      margin-top: 1rem;
      background: rgba(0,0,0,0.3);
      padding: 1rem;
      border-radius: 10px;
      display: inline-block;
      min-width: 300px;
      max-height: 300px;
      overflow-y: auto;
      text-align: left;
    }
    .key-info {
      display: inline-block;
      background: rgba(255,255,255,0.1);
      padding: 0.5rem 1rem;
      margin: 0.25rem;
      border-radius: 8px;
      min-width: 80px;
    }
    .key-char { font-size: 1.5rem; font-weight: bold; }
    .key-code { font-size: 0.8rem; opacity: 0.8; }
    .deprecated-notice {
      background: rgba(251, 191, 36, 0.2);
      border: 1px solid #fbbf24;
      color: #fbbf24;
      padding: 1rem;
      border-radius: 8px;
      margin: 1rem auto;
      max-width: 500px;
      text-align: left;
    }
  </style>
</head>
<body>
  <h1>HTML KeyboardEvent which प्रॉपर्टी डेमो</h1>
  
  <div class="deprecated-notice">
    <strong>⚠ निरस्त (Deprecated):</strong> event.which विरासत कोड के लिए है। आधुनिक कोड में उपयोग करें:
    <ul>
      <li>event.key - दबाया गया कैरेक्टर (उदाहरण: "a", "Enter", "Shift")</li>
      <li>event.code - भौतिक कुंजी (उदाहरण: "KeyA", "Enter", "ShiftLeft")</li>
      <li>event.keyCode - निरस्त, which के समान</li>
    </ul>
  </div>
  
  <input type="text" id="inputField" placeholder="यहां टाइप करें..." onkeypress="showKeyInfo(event)">
  <div class="show" id="keyDisplay">
    <p>दबाई गई कुंजियों के यूनिकोड कोड:</p>
  </div>

  <script>
    const keyDisplay = document.getElementById('keyDisplay');
    let keyCount = 0;
    
    function showKeyInfo(event) {
      keyCount++;
      const char = event.key;
      const which = event.which;
      const keyCode = event.keyCode;
      const code = event.code;
      
      // प्रिंट करने योग्य वर्णों के लिए ही दिखाएं
      if (char.length === 1 && char.match(/[\x20-\x7E\u0080-\uFFFF]/)) {
        const keyInfo = document.createElement('span');
        keyInfo.className = 'key-info';
        keyInfo.innerHTML = `
          <div class="key-char">${char}</div>
          <div class="key-code">which: ${which}</div>
          <div class="key-code">keyCode: ${keyCode}</div>
          <div class="key-code">code: ${code}</div>
        `;
        keyDisplay.appendChild(keyInfo);
      }
      
      // लॉग सभी इवेंट्स (कंसोल में)
      console.log(`Key: "${char}" | which: ${which} | keyCode: ${keyCode} | code: ${code} | type: ${event.type}`);
    }
    
    // कीडाउन/कीअप भी दिखाएं
    document.getElementById('inputField').addEventListener('keydown', (e) => {
      if (!e.key.match(/[\x20-\x7E]/)) { // नॉन-प्रिंटेबल
        console.log(`Keydown: key="${e.key}" which=${e.which} code="${e.code}"`);
      }
    });
  </script>
</body>
</html>

आउटपुट (Output)

टेक्स्ट फील्ड में टाइप करने पर प्रत्येक वर्ण का यूनिकोड कोड दिखाया जाता है:

HTML KeyboardEvent which प्रॉपर्टी: यूनिकोड कैरेक्टर कोड प्राप्त करें

विभिन्न कुंजियों के लिए कंसोल आउटपुट:

HTML KeyboardEvent which प्रॉपर्टी: यूनिकोड कैरेक्टर कोड प्राप्त करें

विस्तृत विश्लेषण

which, keyCode, key, code में अंतर

प्रॉपर्टी विवरण स्थिति उदाहरण (कुंजी 'a')
event.which यूनिकोड कैरेक्टर कोड (keypress) या वर्चुअल की कोड (keydown/up) निरस्त 97
event.keyCode वर्चुअल की कोड (कीबोर्ड लेआउट-स्वतंत्र) निरस्त 65
event.key दबाया गया कैरेक्टर/कुंजी नाम मानक "a" (या "A" शिफ्ट के साथ)
event.code भौतिक कुंजी स्थिति (लेआउट-स्वतंत्र) मानक "KeyA" (QWERTY पर)

इवेंट प्रकार और which मान

  • keypress: प्रिंट करने योग्य वर्णों के लिए यूनिकोड कोड लौटाता है (उदाहरण: 'a' = 97)। नॉन-प्रिंटेबल कुंजियों के लिए असंगत।
  • keydown/keyup: वर्चुअल की कोड लौटाता है (keyCode के समान)। सभी कुंजियों के लिए काम करता है।

आम की कोड्स (keydown/keyup के लिए)

Enter: 13
Escape: 27
Space: 32
Arrow Keys: 37-40 (Left, Up, Right, Down)
Backspace: 8
Tab: 9
Delete: 46
F1-F12: 112-123
Shift: 16
Ctrl: 17
Alt: 18
CapsLock: 20

आधुनिक प्रतिस्थापन पैटर्न

कैरेक्टर इनपुट के लिए (keypress प्रतिस्थापन)

// पुराना तरीका (निरस्त)
input.onkeypress = (e) => {
  if (e.which >= 32 && e.which <= 126) { // प्रिंट करने योग्य ASCII
    handleChar(String.fromCharCode(e.which));
  }
};

// आधुनिक तरीका
input.addEventListener('beforeinput', (e) => {
  if (e.inputType === 'insertText' && e.data) {
    handleChar(e.data); // सीधे कैरेक्टर/स्ट्रिंग मिलता है
  }
});

विशिष्ट कुंजियों का पता लगाना (keydown)

// पुराना
if (e.keyCode === 13) { /* Enter */ }

// आधुनिक - पठनीय और लेआउट-स्वतंत्र
if (e.key === 'Enter') { /* Enter */ }
if (e.code === 'Enter') { /* भौतिक Enter कुंजी */ }

// संशोधक कुंजियाँ
if (e.ctrlKey && e.key === 's') { /* Ctrl+S */ }

ब्राउज़र समर्थन

event.which: सभी ब्राउज़र (विरासत)।
event.key/event.code: Chrome 51+, Firefox 23+, Safari 10.1+, Edge 79+।

सिफारिश

नए कोड में event.which का उपयोग न करें। इसके बजाय:

  • कैरेक्टर इनपुट के लिए: beforeinput इवेंट या event.key (keypress में)
  • कुंजी पहचान के लिए: event.key (कैरेक्टर) या event.code (भौतिक)
  • संशोधक कुंजियों के लिए: event.ctrlKey, event.shiftKey, event.altKey, event.metaKey

  1. HTML DOM timeStamp इवेंट प्रॉपर्टी HTML DOM timeStamp इवेंट प्रॉपर्टी

    HTML DOM timeStamp प्रॉपर्टी इवेंट के निर्माण या ट्रिगर होने के समय को मिलीसेकंड में लौटाती है। नोट: timeStamp केवल तभी काम करता है जब इवेंट सिस्टम उस विशेष इवेंट के लिए इसका समर्थन करता हो। सिंटैक्स event.timeStamp उदाहरण <!DOCTYPE html> <html> <head> <title>timeStamp Event

  1. HTML DOM TouchEvent touches प्रॉपर्टी HTML DOM TouchEvent touches प्रॉपर्टी

    HTML DOM TouchEvent touches प्रॉपर्टी टच सरफेस पर ट्रिगर हुए सभी संपर्क बिंदुओं की सूची दर्शाने वाला TouchList ऑब्जेक्ट लौटाती है। नोट: यदि निर्दिष्ट नोड या उसके किसी चाइल्ड नोड पर टच ट्रिगर होता है तो बाद के टच भी गिने जाएंगे भले ही वे उसी नोड पर ट्रिगर न हुए हों। सिंटैक्स event.touches नोट: हमने

  1. HTML DOM Event type प्रॉपर्टी HTML DOM Event type प्रॉपर्टी

    HTML DOM Event type प्रॉपर्टी इवेंट के प्रकार जैसे click, keypress, load, या touchend को दर्शाने वाला स्ट्रिंग लौटाती है। सिंटैक्स event.type उदाहरण <!DOCTYPE html> <html> <head> <title>HTML DOM Event type</title> <style>    form {