gpt4 book ai didi

javascript - JavaScript 事件监听器是否自动清理?

转载 作者:数据小太阳 更新时间:2023-10-29 05:18:50 25 4
gpt4 key购买 nike

元素从 DOM 中移除后,其事件监听器是否会自动注销并清除其引用的资源(闭包)?如果是,如果某些非事件监听器代码持有对该元素的引用,答案会改变吗?

我特别关心的是“伪导航”,其中 unload 事件被触发并且大部分文档被替换(当然许多替换元素也注册了事件监听器),但可能有在另一个整页加载发生之前的几个伪导航。所以我想知道是否有必要跟踪所有添加的事件监听器并在 unload 触发时手动删除它们以避免泄漏它们引用的任何资源。

(注意:在我的例子中,“使用 jQuery/[其他 js 库] 来处理它”不是一个有效的解决方案。我感兴趣的是与 IE8+ 和其他浏览器的相当新版本的兼容性。)

最佳答案

当 DOM 元素作为现代浏览器垃圾回收过程的一部分被垃圾回收时,事件处理程序将被删除和清理。请注意,这与从 DOM 中删除时不同,因为如果任何 Javascript 引用了已删除的 DOM 元素,它将被保留并且不会被垃圾收集。

注意:这是预期的功能 - 一些较旧的浏览器可能在这方面存在一些错误。旧版本的 IE 最容易出现垃圾回收问题。旧版本的 IE 记录了许多其他类型的 GC 问题,但我不知道您描述的情况有任何具体问题。

关于javascript - JavaScript 事件监听器是否自动清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27995316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com