2011-12-17 12 views
16

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

मैं पूछता हूं क्योंकि मैं जानना चाहता हूं कि अगर मैं AJAX अनुरोधों से नए तत्वों के साथ किसी पृष्ठ के क्षेत्र को फिर से भरना जारी रखता हूं और उन्हें बाध्यकारी घटनाओं को याद करता हूं - केवल उन्हें हटाने के लिए और प्रक्रिया को दोहराएं नया AJAX परिणाम आता है।

+0

यह एक सीधा जवाब नहीं है, लेकिन अगर आप लगातार नए तत्व जोड़ रहे हैं और पुराने को निकालते समय, यह घटना प्रतिनिधिमंडल को संभालने का उपयोग कर सुझाव देंगे आयोजन। यह पूरी तरह से इस मुद्दे से बचाता है। – RightSaidFred

+0

... जो कहा, यदि संभव हो तो मैं नष्ट करने और पुनर्निर्माण के बजाय तत्वों का पुन: उपयोग करने का एक तरीका खोजने का प्रयास करूंगा। – RightSaidFred

+0

@ राइटसाइडफ्रेड, हाँ - यदि तत्व बिल्कुल संबंधित थे तो मैं प्रतिनिधिमंडल का उपयोग करके अधिकांश कार्यक्रमों का पुन: उपयोग कर सकता था। हालांकि, ये मेरे लिए लोड होने वाले पूरी तरह से अलग पृष्ठ हैं। – Xeoncross

उत्तर

5

हां, आधुनिक ब्राउज़र (अंततः) डोम नोड्स में ईवेंट हैंडलर द्वारा उपयोग की गई स्मृति को रिलीज़ करते हैं। हालांकि, इंटरनेट एक्सप्लोरर के पुराने संस्करण नहीं हैं, इसलिए डीओएम से नोड्स को हटाने से पहले ईवेंट श्रोताओं को हटाने के लिए हमेशा अच्छा अभ्यास होता है।

यह समझने के लिए एक अच्छा लेख क्या हो रहा है यह है: http://msdn.microsoft.com/en-us/library/bb250448(v=vs.85).aspx

+6

एक मामूली टिप्पणी: आईई का ग़लत व्यवहार इवेंट हैंडलर से संबंधित तत्वों के संदर्भ वाले संदर्भों से संबंधित था। –

+1

उस लेख की प्रकाशन तिथि जून 2005 है। यह उत्तर 2011 से है। "इंटरनेट एक्सप्लोरर के पुराने संस्करण" थोड़ा अस्पष्ट है लेकिन मुझे लगता है कि इसका अर्थ होगा [आईई 8] (https://en.wikipedia.org/wiki/ Internet_Explorer_8) या पहले आईई 9 दिया गया 2011 में नवीनतम स्थिर था। यह अभी भी मेरे लिए कुछ हद तक खुला प्रश्न है ... – efx

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