2011-01-25 24 views
4

我們有一個真正奇怪的問題,當我們做一個帖子時,行尾是\r\n,但是當我們使用javascript來拉取值時,它只是得到\n。這是導致問題的原因,因爲對於我們的系統,創建將執行常規表單發佈,並且更新將從表單中提取值以構建ajax請求。後來,我們在給定的字段上進行字符串比較,並且看到\r在那裏或不在那裏的奇怪組合。在windows中firefox的不一致行結束行爲

IE處理這個罰款(總是\r\n),窗口上的FF將提交\r\n,在JavaScript中將只報告\n。什麼是真正的FREAKIN奇怪,但是,在Linux上,Firefox和Chrome都將發佈\r\n,並且做一個document.getElementById('text-area-id').value將始終只顯示\n

這是HTTP規範的一些塵土飛揚的角落或類似的東西?瀏覽器是否實現了這個功能,以便windows服務器不會死?有沒有解決方法,然後消毒每一個領域?我期望的是JS和HTTP POST都以相同的方式運行,並且在系統碰巧處於的任何系統上使用系統默認值。

回答

0

\r顯然是DOM中的非法字符,這就是爲什麼你不會從腳本中看到它。當您設置textarea的值時,Firefox將平臺換行符轉換爲\n。另一方面,在提交表單時認爲它需要使用HTTP換行標準,這顯然是\r\n。所以在發送表單之前將它們全部轉換。