java阿克斯码,JavaScriptDOM删除元素

本文探讨了在JavaScript中如何避免内存泄漏,尤其是在使用RemoveChild()或修改innerHTML时,需注意解除节点引用并防止循环引用。Doug Crockford提供了清除事件处理程序的函数示例,并强调了在IE中的特殊挑战。
摘要由CSDN通过智能技术生成

0a89f97ce45bf9f36163a305a1c23edc.png

哔哔one

似乎我没有足够的代表发表评论,所以另一个答案将不得不这样做。当您使用RemoveChild()或通过在父节点上设置innerHTML属性来解除节点链接时,还需要确保没有其他引用它的内容,否则它不会被实际销毁,并会导致内存泄漏。在调用removechild()之前,您可以通过多种方式对节点进行引用,并且必须确保显式删除那些未超出作用域的引用。道格·克罗克福德这里该事件处理程序是IE中循环引用的一个原因,建议在调用removechild()之前显式地删除它们,如下所示function purge(d) {

    var a = d.attributes, i, l, n;

    if (a) {

        for (i = a.length - 1; i >= 0; i -= 1) {

            n = a[i].name;

            if (typeof d[n] === 'function') {

                d[n] = null;

            }

        }

    }

    a = d.childNodes;

    if (a) {

        l = a.length;

        for (i = 0; i 

            purge(d.childNodes[i]);

        }

    }}即使你采取了很多预防措施,你仍然可以像jens-ingo farley所描述的那样,在IE中发现内存泄漏。这里.最后,不要陷入认为Javascript删除就是答案。这似乎是许多人的建议,但做不到这份工作。这里是对理解的一个很好的参考删除作者:康阿克斯。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值