gpt4 book ai didi

javascript - 这个解决方案是否正确处理 DOM 内存泄漏

转载 作者:行者123 更新时间:2023-12-01 02:06:45 27 4
gpt4 key购买 nike

全部:

当我尝试遵循 JS DOM 内存泄漏教程时,有一个关于 OLD IE(7, 8) 的内存泄漏示例:

<div id="myDiv">
<button id="myBtn">Click Me</button>
</div>

<script type="text/javascript">
var btn = document.getElementById("myBtn");
btn.onclick = function(){
document.getElementById("myDiv").innerHTML = "Processing...";
}
</script>

它给出的解决方案是:

<div id="myDiv">
<button id="myBtn">Click Me</button>
</div>

<script type="text/javascript">
var btn = document.getElementById("myBtn");
btn.onclick = function(){




btn.onclick = null;





document.getElementById("myDiv").innerHTML = "Processing...";
}
</script>

我在这里感到困惑:

  1. 泄漏是什么:myBtn DOM对象还是onclick函数?(我的理解:它试图说DOM,因为innerHTML试图用文本节点替换整个按钮节点)
  2. 如果 DOM 泄漏,那么 btn 变量仍然引用 DOM,导致无法 GC,为什么可以解决这个问题?

谢谢

最佳答案

两种情况都存在泄漏。您必须释放指向 DOM 对象的 btn 变量和 onclick 事件才能停止监听该事件。

关于javascript - 这个解决方案是否正确处理 DOM 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50048315/

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