这是我们在实际开发中实实在在遇到的问题,没有任何悬念。这个问题就是:
在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>
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛