2011-08-03 21 views
20

जावास्क्रिप्ट में ईवेंट हैंडलर और ईवेंट श्रोताओं के बीच क्या अंतर है? जब ईवेंट प्रकट होता है तो वे दोनों फ़ंक्शन निष्पादित करते हैं। मुझे ईवेंट हैंडलर का उपयोग कब और ईवेंट श्रोताओं का उपयोग करने के लिए वास्तव में नहीं मिलता है।जावास्क्रिप्ट - ईवेंट हैंडलर और श्रोता के बीच क्या अंतर है?

उत्तर

16

कोई फर्क नहीं पड़ता; यह एक ही चीज़ के लिए सिर्फ अलग शब्दावली है।

घटना प्रबंधन के उद्देश्य के लिए डीओएम तत्वों के साथ कार्यों को जोड़ने के विभिन्न तरीके हैं, यही सब कुछ है। मतभेद वापस उभरे जब मानक प्रवाह में थे (या सिर्फ इसलिए कि कार्यान्वयन करने वाले सींग का या कठिन थे) लेकिन आखिरकार तंत्र अनिवार्य रूप से वही हैं।

आप क्या ईवेंट हैंडलर पंजीकरण की तरह उपयोग करने के लिए लेकर असमंजस में हैं, तो आप कर सकते हैं:

  • Read more about the topic और एक दृष्टिकोण का उपयोग करने, शायद एक ब्राउज़र द्वारा ब्राउज़र के आधार पर चयन;
  • लोकप्रिय जावास्क्रिप्ट चौखटे में से एक चुनें और संलग्न संचालकों
+0

उत्तर के लिए धन्यवाद। इसलिए, जब उन दोनों के बीच कोई फर्क नहीं पड़ता है, तो ब्राउज़र समर्थन के कारण, मैं ईवेंट ईवेंट हैंडलर का उपयोग कर रहा हूं। (मुझे दो श्रोताओं की जरूरत है, लेकिन केवल एक हैंडलर)। –

+0

लेकिन ... "श्रोता" और "हैंडलर" के बीच * कोई अंतर नहीं है, तो आपके पास तीन श्रोताओं, या तीन हैंडलर, या किसी भी संयोजन है। वास्तव में ** ** ** वास्तव में हैंडलर को जोड़ने के विभिन्न तरीकों को मिश्रण करने की एक अच्छी आदत नहीं है। – Pointy

+0

एहम, मैं उन्हें मिश्रण नहीं करूंगा। मैं बस इतना कह रहा था कि मुझे केवल दो श्रोताओं के बजाय एक हैंडलर चाहिए (एनएस इवेंट मॉडल के लिए एक श्रोता और एमएस इवेंट मॉडल के लिए एक)। टिप्पणियों के अनुरूप इसे बनाने के लिए –

23

एक नियंत्रक और एक श्रोता हैं उसी में से एक के लिए अपने तंत्र का उपयोग - बस समारोह है कि संभाल लेंगे एक घटना के लिए समानार्थी शब्द। "हैंडलर" शायद अधिक स्वीकार्य शब्द है, और निश्चित रूप से मेरे लिए अधिक अर्थात् सही है। शब्द "श्रोता" एक तत्व में ईवेंट जोड़ने के लिए इस्तेमाल किया कोड से प्राप्त होता है:

element.addEventListener('click', function() { /* do stuff here*/ }, false); 

हालांकि, आप वास्तव में nitpicky हो और दो अलग-अलग अर्थ में टूट सकता है। यदि आप इतने इच्छुक हैं, तो "हैंडलर" उस समारोह के लिए शब्द हो सकता है जो एक ईवेंट को संभालने जा रहा है जब आप "श्रोता" जोड़ते हैं, इस प्रकार एक में कई "श्रोताओं" हो सकते हैं जो एक "हैंडलर" का उपयोग करते हैं। पर विचार करें:

// handler is synonymous with function 
function someFunction(e) { 
    if (typeof e == 'undefined') 
    alert('called as a function'); 
    else 
    alert('called as a handler'); 
} 


// use someFunction as a handler for a 
// click event on element1 -- add a "listener" 
element.addEventListener('click', someFunction, false); 
// use an anonymous function as a handler for a 
// click event on element1 -- add another "listener" 
element.addEventListener('click', function() { alert('anonymoose'); }, false); 


// use someFunction as a handler for a 
// click event on element2 -- add a "listener" 
element2.addEventListener('click', someFunction, false); 

// call someFunction right now 
someFunction(); 

तो उपरोक्त कोड में, मैं 2 "संचालकों" (someFunction और एक गुमनाम समारोह) और 3 "श्रोताओं" है।

फिर, यह सभी अर्थशास्त्र है - सभी व्यावहारिक उद्देश्यों के लिए शब्द श्रोता और हैंडलर का उपयोग एक दूसरे के लिए किया जाता है। यदि एक भेद की आवश्यकता है तो श्रोता ऐसी घटना की सदस्यता है जो हैंडलर पर कॉल ट्रिगर करेगा (जो फ़ंक्शन है)।

मिट्टी के रूप में साफ़ करें?

+0

, आप इसे "element1.addEventListener (...)" –

+0

बना सकते हैं जावा में उतना ही कम। http://stackoverflow.com/a/4725508/3184778। अब और अधिक समझ में आता है। Thx – kouretinho

+0

_Anonymoose_ LOL: पी – Arjun

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