
正文
一个关于js的内存问题
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
<script type="text/javascript">
function textChange(id, fn) {
var textarea = document.getElementById(id);
if ("\v" == "v") {
textarea.onpropertychange = fn;
}
else {
textarea.addEventListener("input", fn, false);
}
} function SetTxt2() {
document.getElementById("txt2").value = document.getElementById("txt1").value;
} function SetTxt1() {
document.getElementById("txt1").value = document.getElementById("txt2").value;
}
onload = function () {
textChange("txt1", SetTxt2); textChange("txt2", SetTxt1);
}
</script>
<input type="text" name="" value="" id="txt1" /><br />
<input type="text" name="" value="" id="txt2" />
这段代码火狐和谷歌Chrome中运行是没有问题的,但是在IE8中运行有问题
报错:

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







