यदि मैं किसी तत्व पर किसी ईवेंट को पंजीकृत करने के लिए addEventListener का उपयोग करता हूं, तो ईवेंट को हटाए बिना तत्व को हटाएं और मैंने बार-बार ऐसा किया है कि मैं मेमोरी लीक बना सकता हूं?जावास्क्रिप्ट addEventListener मेमोरी-लीक्स प्रश्न
उत्तर
इसे रिसाव नहीं करना चाहिए। एक ब्राउज़र जो नरक की तरह लीक करने के लिए कुख्यात है जब एक ईवेंट हैंडलर होस्ट-ऑब्जेक्ट <> जेएस-ऑब्जेक्ट लूप आईई (संस्करण 7 तक) है, और आईई (संस्करण 8 तक) addEventListener
का समर्थन नहीं करता है।
इसे चलाएं और देखें कि लंबे समय तक ब्राउज़र का मेमोरी उपयोग कैसे प्रभावित होता है, यदि आप किसी विशेष ब्राउज़र में इसका परीक्षण करना चाहते हैं।
<div id="x"></div>
<script type="text/javascript">
function replace() {
var x= document.getElementById('x');
if (x.firstChild!==null)
x.removeChild(x.firstChild);
var el= document.createElement('p');
el.addEventListener('click', click, false);
x.appendChild(el);
}
function click() {
alert('click');
};
setInterval(replace, 1);
</script>
(एक संदर्भ पाश वर्तमान के साथ यह परीक्षण करने के लिए, replace
शरीर में ऊपर ले जाने के function click
परिभाषा।)
आप स्मृति रिसाव हो जाएगा अगर आप डोम, तत्वों है कि श्रोताओं संलग्न किया है से हटा दें। लेकिन यह केवल आईई, एफएक्स और अन्य में होता है उन्नत जीसी है।
अक्सर ऐसा होता है अगर आप डोम के माध्यम से नहीं डोम तत्वों के साथ हेरफेर, लेकिन जैसे
el.innerHTML = ...
उदाहरण के लिए, YUI कस्टम प्राप्ति setInnerHTML, इस मामले में स्मृति रिसाव को रोकने के लिए है।
- 1. जावास्क्रिप्ट का addEventListener विधि
- 2. जावास्क्रिप्ट "addEventListener" पृष्ठ लोड
- 3. जावास्क्रिप्ट addEventListener onStateChange IE
- 4. jQuery .on(); बनाम जावास्क्रिप्ट .addEventListener();
- 5. addEventListener
- 6. addEventListener
- 7. addEventListener
- 8. कैनवास टैग में addEventListener
- 9. addEventListener IE8
- 10. addEventListener और इस
- 11. जावास्क्रिप्ट स्प्लिट रेगेक्स प्रश्न
- 12. jquery/जावास्क्रिप्ट कैशिंग प्रश्न
- 13. जावास्क्रिप्ट अक्षम, लघु प्रश्न
- 14. जावास्क्रिप्ट इवेंट-लूप प्रश्न
- 15. जावास्क्रिप्ट में attachEvent()/addEventListener() के साथ जोड़े गए एक्सेस ईवेंट
- 16. लूप-गुजरने वाले पैरामीटर के लिए जावास्क्रिप्ट एकाधिक गतिशील addEventListener
- 17. Uncaught TypeError: addEventListener
- 18. Onclick बनाम addEventListener
- 19. वही addEventListener काम करेगा?
- 20. जावास्क्रिप्ट प्रश्न: Onbeforeunload या Onunload?
- 21. जावास्क्रिप्ट प्रश्न - "विंडो" क्या है?
- 22. डिज़ाइन प्रश्न: जावास्क्रिप्ट में पॉलीमोर्फिज्म
- 23. जावास्क्रिप्ट "अनकॉट टाइप एरर: ऑब्जेक्ट फ़ंक्शन नहीं है" सहयोगी प्रश्न
- 24. मैं addEventListener को कैसे अपडेट करूं?
- 25. जावास्क्रिप्ट() लूप, विभाजन(), और सरणी प्रश्न
- 26. जावास्क्रिप्ट तुलना प्रश्न (शून्य> = 0)
- 27. .ondragstart .addEventListener के बराबर नहीं ("dragstart"
- 28. ऑनलोड बनाम addEventListener ('load') iframe व्यवहार
- 29. addEventListener onbeforeunload साथ काम नहीं कर रहा
- 30. सामग्री स्क्रिप्ट में addEventListener काम नहीं कर रहा