Javascript是否删除已删除DOM元素的事件处理程序?

Xeo*_*oss 20 javascript dom memory-leaks

如果我将一堆事件附加到某些DOM元素 - 然后删除它们 - 是否仍会使用用于其事件处理程序或其他属性的内存?

我问,因为我想知道如果我继续使用来自AJAX请求的新元素重新填充页面区域并将事件绑定到它们,我是否会使用一堆内存 - 只删除它们并在新的AJAX结果出现时重复该过程在.

jua*_*azo 8

是的,现代浏览器(最终)释放DOM节点中事件处理程序使用的内存.但是,旧版本的Internet Explorer没有,因此在从DOM中删除节点之前删除事件侦听器总是很好的做法.

这是一篇很好的文章,用于了解正在发生的事情:http://msdn.microsoft.com/en-us/library/bb250448(v = vs.85).aspx

  • 一个小评论:IE的错误行为与事件处理程序有关,这些事件处理程序持有对它们所附加元素的引用. (6认同)
  • 该文章的出版日期是2005年6月.这个答案来自2011年."旧版本的Internet Explorer"有点模棱两可,但我认为这意味着[IE 8](https://en.wikipedia.org/wiki/Internet_Explorer_8 )或早些时候鉴于IE 9是2011年的最新稳定版.这对我来说仍然是一个有点开放的问题...... (3认同)