一个关于js的内存问题

本文讨论了在IE8浏览器中运行JavaScript代码时遇到的问题,特别关注于标记删除与引用计数两种不同的内存垃圾收集方式之间的差异,并解释了这如何导致在IE8中的死循环问题。文章提供了解决方案并指出,此问题已在IE9中得到修复。
 1 <script type="text/javascript">
 2     function textChange(id, fn) {
 3         var textarea = document.getElementById(id);
 4         if ("\v" == "v") {
 5             textarea.onpropertychange = fn;
 6         }
 7         else {
 8             textarea.addEventListener("input", fn, false);
 9         }
10     }
11 
12     function SetTxt2() { 
13         document.getElementById("txt2").value = document.getElementById("txt1").value;
14     }
15 
16     function SetTxt1() {
17         document.getElementById("txt1").value = document.getElementById("txt2").value;
18     }
19     onload = function () {
20         textChange("txt1", SetTxt2);
21 
22         textChange("txt2", SetTxt1);
23     }
24 </script>
25 <input type="text" name="" value="" id="txt1" /><br />
26 <input type="text" name="" value="" id="txt2" />

这段代码火狐和谷歌Chrome中运行是没有问题的,但是在IE8中运行有问题

报错:

出错的原因是因为:火狐和谷歌Chrome对于内存垃圾的处理方式是标记删除,但是IE8部分使用了标记删除,IE8对于DOM的内存垃圾收集方式依旧使用的是引用计数,会出现死循环的问题。IE9修复了这一问题!

转载于:https://www.cnblogs.com/tq1226112215/p/3637567.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值