技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> CSS/HTML --> IE下pre标签的InnerHTML问题

IE下pre标签的InnerHTML问题

浏览:1638次  出处信息

今天在升级我自己的语法高亮显示插件的时候, 发现在IE下, 都缺少了最后一行的显示, 如果pre中只有一行语句的时候, 就什么都不显示..

追踪了半天(IE下我只用Alert,,,), 最后发现, 如下语句在IE上运行的结果, 比在FF/Chrome中少1.

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

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

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

有这个问题的IE包括: Explorer 6, 7, 8 (已验证)

建议继续学习:

  1. 使<pre>的内容自动换行    (阅读:2014)
  2. 优化innerHTML操作    (阅读:1922)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1