일부 DOM 요소에 일련의 이벤트를 첨부 한 다음 제거하면 해당 이벤트 핸들러 나 다른 속성에 사용되는 메모리가 여전히 사용됩니까?자바 스크립트는 삭제 된 DOM 요소의 이벤트 처리기를 제거합니까?
AJAX 요청에서 새로운 요소가있는 페이지 영역을 다시 채우고 해당 이벤트를 바인딩하는 경우 많은 메모리를 사용할지 알고 싶습니다. 삭제하고 해당 프로세스를 반복 할 때만 프로세스를 반복하십시오. 새로운 AJAX 결과가 나타납니다.
일부 DOM 요소에 일련의 이벤트를 첨부 한 다음 제거하면 해당 이벤트 핸들러 나 다른 속성에 사용되는 메모리가 여전히 사용됩니까?자바 스크립트는 삭제 된 DOM 요소의 이벤트 처리기를 제거합니까?
AJAX 요청에서 새로운 요소가있는 페이지 영역을 다시 채우고 해당 이벤트를 바인딩하는 경우 많은 메모리를 사용할지 알고 싶습니다. 삭제하고 해당 프로세스를 반복 할 때만 프로세스를 반복하십시오. 새로운 AJAX 결과가 나타납니다.
예, 최신 브라우저는 결국 DOM 노드에서 이벤트 처리기에서 사용하는 메모리를 릴리스합니다. 그러나 이전 버전의 Internet Explorer에서는 그렇지 않으므로 DOM에서 노드를 제거하기 전에 이벤트 리스너를 제거하는 것이 좋습니다.
이 무슨 일이 일어나고 있는지 이해하는 좋은 기사입니다 : http://msdn.microsoft.com/en-us/library/bb250448(v=vs.85).aspx
사소한 의견 : IE의 잘못된 동작은 첨부 된 요소에 대한 참조를 보유한 이벤트 처리기와 관련이 있습니다. –
이 기사의 발행일은 2005 년 6 월입니다.이 답변은 2011 년부터 있습니다. "Internet Explorer의 이전 버전"은 약간 모호하지만 [IE 8] (https://en.wikipedia.org/wiki/)을 의미하는 것으로 추정됩니다. Internet_Explorer_8) 또는 그 이전에 IE 9가 2011 년에 가장 안정적인 것으로 나타났습니다. 이것은 나에게 여전히 열려있는 질문입니다 ... – efx
이 직접 대답하지 않습니다,하지만 당신은 지속적으로 새로운 요소를 추가하고 오래된 것들을 제거하는 경우, 내가 이벤트 대표단을 처리 사용하는 것이 좋습니다 것 이벤트. 이 문제를 완전히 피할 수 있습니다. – RightSaidFred
... 가능하다면 파괴하고 재창조하는 대신 요소를 재사용 할 수있는 방법을 찾으려고합니다. – RightSaidFred
@ RightSaidFred, 예 - 요소가 전혀 관련되지 않은 경우 위임을 사용하여 대부분의 이벤트를 재사용 할 수 있습니다. 그러나 이들은 완전히 다른 페이지 로딩 중입니다. – Xeoncross