這是我們在實際開發中實實在在遇到的問題,沒有任何懸念。這個問題就是:
在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>