IE9 bug: 在textarea中复制内容会丢失换行符

这是我们在实际开发中实实在在遇到的问题,没有任何悬念。这个问题就是:

在IE9中,在HTML多行文本框textarea中输入带有换行的内容,比如在这篇随笔下面的评论框中输入,然后选中文本框中的内容Ctrl+C/Ctrl+V粘贴到记事本中,所有换行符会丢失,变成一行。

经过测试,在IE6, IE8, Chrome, Firefox中都不存在这个问题。

stackoverflow上也提到了这个问题 - IE9 and TEXTAREA newlines,并提供了你轻意不会采用的解决方法,就是让IE9倒退至IE7,在中添加如下代码:


<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 = "

aaaa

"; // 只能在IE9中被解析,其他浏览器不解析 /*下边是我自己测试的结论: textarea表示文本区域,本应该把它里边的各种文字、标签等显示成纯文本的形式。 直接把诸如

aa

的html形式标签放到textarea里,在IE9及其他浏览器里都会把P标签显示出来, 这个应该是正确的解析,没什么问题。 但是,把

aa

通过JS的innerHTML向textarea里插入,就能(只能)被IE9解析成红色的aa,把p标签当成html标签解析, p被过滤掉了(注意,的文档声明必须要加上,不加的话,IE9就不会解析p标签了)。 当然,textarea里一般不应该用innerHTML方法插入内容。
*/ script> body> html>

你可能感兴趣的:(IE9 bug: 在textarea中复制内容会丢失换行符)