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修复了这一问题!