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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM