2

IE下pre标签的InnerHTML问题

 3 years ago
source link: https://www.laruence.com/2010/04/12/1394.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

IE下pre标签的InnerHTML问题

今天在升级我自己的语法高亮显示插件的时候, 发现在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 (已验证)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK