ईवेंट्स

एक पेज जो कभी प्रतिक्रिया नहीं देता वह सिर्फ एक दस्तावेज़ है। जब आप चाहते हैं कि कोई बटन पर क्लिक करने पर, सर्च बॉक्स में टाइप करने पर, या फॉर्म सबमिट करने पर कुछ होना चाहिए, तो आपको कहने का एक तरीका चाहिए "जब यह होता है, तो यह कोड चलाएँ"। यही ईवेंट्स हैं। यह अध्याय उपयोगकर्ता द्वारा किए जाने वाले कामों को सुनने और उनके जवाब देने के बारे में है।
एक ईवेंट को सुनना
एक ईवेंट कुछ ऐसा है जो पेज पर होता है: एक क्लिक, एक की प्रेस, एक फॉर्म भेजा जाना। इसके जवाब में, आप एक एलिमेंट चुनते हैं, ईवेंट का नाम देते हैं जिसकी आपको परवाह है, और इसके होने पर चलाने के लिए एक फंक्शन हाथ में दे देते हैं।
वह फंक्शन हैंडलर कहलाता है। जो मेथड इसे जोड़ता है वह है addEventListener:
const button = document.querySelector(".buy-button");
button.addEventListener("click", () => {
console.log("किसी ने खरीदारी बटन पर क्लिक किया");
});बाएँ से दाएँ पढ़ें: इस बटन पर, "click" के लिए सुनें, और जब यह होता है, तो यह फंक्शन चलाएँ। हैंडलर हर बार चलता है जब ईवेंट होता है, एक बार नहीं। तीन बार क्लिक करें और यह तीन बार चलेगा।
हैंडलर सामान्य फंक्शन हैं, और जिन एलिमेंट्स को आप उन्हें अटैच करते हैं वे DOM से आते हैं। अगर आप एक एलिमेंट चुन सकते हैं और एक फंक्शन लिख सकते हैं, तो आप उपयोगकर्ता द्वारा इसे किए जाने वाले कामों के जवाब दे सकते हैं।
"click" जैसी स्ट्रिंग के रूप में नाम दें, और addEventListener को चलाने के लिए एक फंक्शन दें। वह फंक्शन हैंडलर है, और यह हर बार चलता है जब ईवेंट होता है, एक बार नहीं। यह एक मेथड लगभग सभी कुछ के पीछे है जो पेज आपके जवाब में करता है। ईवेंट ऑब्जेक्ट
जब ब्राउज़र आपके हैंडलर को चलाता है, तो यह इसे एक जानकारी देता है: एक ईवेंट ऑब्जेक्ट जो बताता है कि क्या हुआ। इसे अपने हैंडलर को एक पैरामीटर दे कर पकड़ें, आमतौर पर event नाम दिया जाता है:
const button = document.querySelector(".buy-button");
button.addEventListener("click", (event) => {
console.log(event.target); // वह एलिमेंट जिस पर क्लिक किया गया
});सबसे उपयोगी हिस्सा है event.target: वह एलिमेंट जिस पर ईवेंट हुआ। अगर क्लिक बटन पर था, तो event.target वह बटन है। आपको इसे दोबारा चुनना नहीं पड़ता, ईवेंट पहले से ही बताता है कि यह कहाँ से आया।
event नाम का एक पैरामीटर दें। जिस हिस्से के लिए आप सबसे ज्यादा पहुँचेंगे वह है event.target, वह एलिमेंट जिस पर ईवेंट हुआ। इसे दोबारा चुनने की कोई जरूरत नहीं, ईवेंट पहले से ही जानता है कि यह कहाँ से आया। आम ईवेंट्स
कुछ ईवेंट्स लगभग सभी कुछ को कवर करते हैं जो आप बनाएँगे:
click: उपयोगकर्ता कुछ पर क्लिक या टैप करता है।input: जब वे टाइप करते हैं तो टेक्स्ट फील्ड की वैल्यू बदलती है।submit: एक फॉर्म भेजा जाता है।keydown: एक की दबाई जाती है।
मुश्किल वाला है submit। डिफ़ॉल्ट रूप से, फॉर्म सबमिट करने से पेज रीलोड होता है, जो आपके JavaScript को मिटा देता है। इसे रोकने के लिए, हैंडलर के अंदर event.preventDefault() कॉल करें:
const form = document.querySelector("form");
form.addEventListener("submit", (event) => {
event.preventDefault(); // पेज को रीलोड होने से रोकें
console.log("फॉर्म सबमिट किया गया, पेज जहाँ है वहीं रहता है");
});click, input, submit, और keydown। जो एक याद रखना है वह है submit: एक फॉर्म डिफ़ॉल्ट रूप से पेज रीलोड करता है, तो हैंडलर में event.preventDefault() कॉल करें इसे रोकने के लिए और नियंत्रण रखें। इसे मिस करें और आपका पेज आपके नीचे रीफ्रेश होता है, जो पहली बार confusing है। ईवेंट्स यहाँ से कहाँ जाते हैं
ईवेंट्स यह हैं कि एक पेज कैसे सुनता है। आप एक एलिमेंट चुनते हैं, नाम देते हैं कि आप किस बारे में परवाह करते हैं, और जब यह होता है तो एक फंक्शन चलाते हैं, ईवेंट ऑब्जेक्ट से विवरण पढ़ते हुए जब आप जाते हैं। लगभग हर interactive फीचर उस loop से बनाया जाता है।
प्राकृतिक अगला कदम हैंडलर में कुछ slow करना है, जैसे फॉर्म को किसी सर्वर को भेजना या fresh डेटा लोड करना, पेज को फ्रीज़ किए बिना। यही async कोड क्या है, और यह अगला अध्याय है। हैंडलर जो structured डेटा में पहुँचते हैं, जैसे items की एक सूची जो आप objects में रखते हैं, वह भी जिसे आप पहले से जानते हैं पर लीन करते हैं।

