IE9 bug: 在textarea中复制内容会丢失换行符
?
这是我们在实际开发中实实在在遇到的问题,没有任何悬念。这个问题就是:
在IE9中,在HTML多行文本框textarea中输入带有换行的内容,比如在这篇随笔下面的评论框中输入,然后选中文本框中的内容Ctrl+C/Ctrl+V粘贴到记事本中,所有换行符会丢失,变成一行。
经过测试,在IE6, IE8, Chrome, Firefox中都不存在这个问题。
stackoverflow上也提到了这个问题 -?IE9 and TEXTAREA newlines,并提供了你轻意不会采用的解决方法,就是让IE9倒退至IE7,在<head>中添加如下代码:
<!-- Mimic Internet Explorer 7 --> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" >
一个很小的问题,却给我们实现一个功能带来了大麻烦!
园子里找了找,huajs还发现了IE9的另外一个bug(详见发现了IE9里的一个bug),也是针对textarea的,这里也拿出来示众一下。
简而言之,就是IE9会解析textarea中的html代码,测试代码如下(代码来源):
<!DOCTYPE HTML> <html> <head> <title></title> </head> <body> <textarea id="t" rows="6"></textarea> <script> var t = document.getElementById("t"); t.innerHTML = "<p style='color:red'>aaaa</p>"; // 只能在IE9中被解析,其他浏览器不解析 /*下边是我自己测试的结论: textarea表示文本区域,本应该把它里边的各种文字、标签等显示成纯文本的形式。 直接把诸如 <p style='color:red'>aa</p>的html形式标签放到textarea里,在IE9及其他浏览器里都会把P标签显示出来, 这个应该是正确的解析,没什么问题。 但是,把 <p style='color:red'>aa</p> 通过JS的innerHTML向textarea里插入,就能(只能)被IE9解析成红色的aa,把p标签当成html标签解析, p被过滤掉了(注意,<!DOCTYPE>的文档声明必须要加上,不加的话,IE9就不会解析p标签了)。 当然,textarea里一般不应该用innerHTML方法插入内容。 */ </script> </body> </html>