pre标签里的代码在IE浏览器下无法完全显示

添加评论 2010年4月29日

最近在网站中添加语法高亮显示插件的时候,发现在IE浏览器下,任何代码都会缺少最后一行的显示,如果pre标签中只有一行代码的时候,就什么都不显示出来了。通过使用工具在浏览器下检测后发现,要是你的代码中包含以下语句,那么在IE浏览器上运行的结果就会比在其他浏览器中少一行。

1.    var codes = document.getElementsByTagName("pre");
2.    alert(codes[0].length); //IE浏览器下如果是10,那么在火狐和Chrome浏览器中就是11

因为这款语法高亮插件,是通过对最后一个字符是否为\n ,或者 \r来判断新行开始,旧行结束的。所以导致在IE下,最后一行的内容永远不会显示。

原来, IE对所有要显示的data都做了text normalization,即使是pre或者textarea这种应该保持原状的标签,应该是这个原因,导致在显示pre内容的时候,行尾的回合换行被抹掉了。

后来检测三款主流的IE浏览器:IE6\IE7\IE8都存在这个问题。

虽然Web技术人员最常使用的浏览器是Firefox、Safari和Chrome,但是IE浏览器在所有终端用户那里的统计数字,市场份额保持在50%以上,这让我们更加注重IE下的显示效果。

  1. 2010年4月29日 at 13:39 | #1
    joy

    IE有一些自己的规范,所以咱们在IE浏览器下检查问题的时候一定要细心。

  1. 还没有 trackbacks
订阅评论