【一天一道兼容性】之——IE6、7、8中的空格、折行
demo1:
1 <p id="p"> 123</p> <!--1之前有个半角空格--> 2 <script> 3 var p = document.getElementById("p"); 4 alert(p.innerHTML.length) //IE6、7、8弹出3,忽略了空格 标准浏览器弹出4 没有忽略空格 5 </script>
解析1:
1 alert(p.innerHTML.charAt(0) == "\u0020") //IE6、7、8的charAt(0)为1 标准浏览器的charAt(0)为"\u0020"
demo2:
1 <p id="p"> 2 123</p> <!--1之前添加一个回车--> 3 <script> 4 var p = document.getElementById("p"); 5 alert(p.innerHTML.length) //IE6、7、8依然是3 标准浏览器:12 6 </script>
解析2:
1 alert(p.innerHTML.charAt(0)=="\u0020") //标准浏览器:false 2 alert(p.innerHTML.charAt(0)=="\n") //标准浏览器:true 3 alert(p.innerHTML.charAt(1)=="\u0020") //标准浏览器:true 4 . true 5 . true 6 . true 7 alert(p.innerHTML.charAt(8)=="\u0020") //标准浏览器:true
demo3:
1 <p id="p"> 2 123 <!--前后两次回车--> 3 </p> 4 <script> 5 var p = document.getElementById("p"); 6 alert(p.innerHTML.length) //IE6、7、8弹出4 标准浏览器:17 7 </script>
解析3:
1 alert(p.innerHTML.charAt(3)=="\n") //IE6、7、8:false 2 alert(p.innerHTML.charAt(3)=="\r") //IE6、7、8:false 3 alert(p.innerHTML.charAt(3)=="\u3000") //IE6、7、8:false 4 alert(p.innerHTML.charAt(3)=="\u0020") //IE6、7、8:true
总结:不同编辑器,不同的模板会产生不同的折行或者空格,所以用childNodes会比较麻烦
建议解决方法:
1 p.innerHTML.replace(/\n+|\r+|\u0020\|\u3000/g,"");