2012-05-17 12 views
5

मैं जावास्क्रिप्ट में तत्व संपत्ति को लिखने के लिए addEventListener() का उपयोग करने के लिए अपना कोड अपडेट करने जा रहा हूं।मैं addEventListener को कैसे अपडेट करूं?

ऐसा करने से पहले मैं कुछ चीजों को सत्यापित करना चाहता था।

1.) मुझे लगता है कि अगर मुझे डीओएम अपडेट किया गया है और तत्वों को हटाएं (.inner HTML लिखकर) को हटाएं तो मुझे removeEventListener() को कॉल करने की आवश्यकता नहीं है। IE9, क्रोम, फायरफॉक्स, सफारी

3.) वहाँ कोई अन्य मुद्दों है कि आधुनिक ब्राउज़रों पर arrise सकते हैं -

2.) addEventListener लोकप्रिय आधुनिक ब्राउज़रों पर समर्थित है।

मैं बी.सी. से पूछ रहा हूं। मैं अपना कोड अपडेट करने में बंदूक कूदना नहीं चाहता हूं।

नोट्स:

संपत्ति घटना सहसंबंध करने के लिए (पर निकालने के लिए)।

  • onkeypress - कुंजी दबाने
  • onBlur -> कलंक
  • onFocus -> ध्यान केंद्रित

रिसर्च

https://developer.mozilla.org/en/DOM/element.addEventListener (है अनुकूलता चार्ट)

http://www.quirksmode.org/js/events_advanced.html

संबंधित

JavaScript listener, "keypress" doesn't detect backspace?

नोट्स

  • इसके बजाय झूठे लौटने का। फॉर्म पर सबमिट करने से फ़ॉर्म को रोकने के लिए preventDefault() का उपयोग करें।
+0

आपकी धारणाएं सही हैं ... इसके लिए जाएं ... बीटीडब्ल्यू, यदि आप नहीं हैं तो वर्तमान फ़ाइल की एक प्रति स्टोर करें! –

+0

ठीक है .... अगर कोई समस्या है ... मैं उन्हें यहां पोस्ट करूंगा। –

+0

@ CS_2013 'addEventListener' के लिए, यह कीप्रेस है। साथ ही, आप चीज़ों को क्रॉस-ब्राउज़र बनाने के लिए jQuery का उपयोग करना चाह सकते हैं। हुड के तहत यदि संभव हो तो 'addEventListener' का उपयोग करता है, पुराने IE के लिए' attachEvent' पर वापस आ सकता है और आपके ईवेंट ऑब्जेक्ट को भी सामान्य कर सकता है, इसलिए आपको मतभेदों के बारे में चिंता करने की आवश्यकता नहीं है। – kapa

उत्तर

3
  1. आप की जरूरत नहीं है। यदि आप डीओएम तत्व (उदाहरण के लिए आकस्मिक वैश्विक चर में) के संदर्भों को संग्रहीत नहीं करते हैं, तो कचरा कलेक्टर इसे साफ़ करना चाहिए।

  2. यह ब्राउज़र समर्थन है। पुराने आईईएस के लिए attachEvent() है जो लगभग समान है।

  3. कुछ भी नहीं जिसके बारे में आपको चिंता करनी चाहिए। यह जाने का आधुनिक तरीका है।

नोट: आप चीजों को पार ब्राउज़र बनाने के jQuery उपयोग करने के लिए चाहते हो सकता है। हुड के तहत यदि संभव हो तो addEventListener का उपयोग करता है, पुराने आईई और normalizes your event object के लिए attachEvent पर वापस आ सकता है, इसलिए आपको अंतरों के बारे में चिंता करने की आवश्यकता नहीं है। यह डोम हेरफेर और ट्रैवर्सल के लिए भी बहुत अच्छा है।

+0

मैं ग्लोबल्स का उपयोग नहीं करता ... इसलिए मैं वहां अच्छा हूं। –

4

1) आप उस बात के लिए removeEventListener कॉल करने के लिए की जरूरत नहीं है लेकिन यदि आप अपने बच्चों के किसी भी आप डॉन निकालने के लिए, यदि आप DOM एलीमेंट addEventListener के माध्यम से eventListener से जुड़ी हटाने removeEventListener को कॉल करना होगा कुछ भी हटाने की जरूरत नहीं है।

2) addEventListener सभी प्रमुख ब्राउज़रों पर समर्थित है

3) वहाँ addEventListener

4) onkeypress से संबंधित आधुनिक ब्राउज़रों पर कोई अन्य मुद्दों की एक घटना है, लेकिन एक विशेषता, इस कार्यक्रम का नाम नहीं है नाम कुंजीपटल है।क्रॉस-ब्राउज़र संगतता के लिए jQuery से बचने के लिए * एक जैसे

एक त्वरित कोड पर अन्य नामों के लिए एक ही:

Element.prototype.on = function(evt, fn) { 
if (this.addEventListener) 
    this.addEventListener(evt, fn, false); 
else if (this.attachEvent) 
    this.attachEvent('on' + evt, fn); 
}; 

Element.prototype.off = function(evt, fn) { 
    if (this.removeEventListener) 
     this.removeEventListener(evt, fn, false); 
    else if (this.detachEvent) 
     this.detachEvent('on' + evt, fn); 
}; 
+0

अच्छा साफ कोड ... क्या मुझे पुराने ब्राउज़र का समर्थन करना चाहिए, मैं इसे शामिल करूंगा ... –

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