分類  >  Web前端 >

IE9 bug: 在textarea中複製內容能丟失換行符

tags:    時間:2013-12-10 00:02:22
IE9 bug: 在textarea中複製內容會丟失換行符

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>

推薦閱讀文章

Bookmark the permalink ,來源:互聯網