簡體   English   中英

為什么 Javascript 回車是兩個時只算一個字符?

[英]Why does Javascript only count carriage returns as one character when it is two?

這是這個問題的一個分支: Chrome counts characters wrong in textarea with maxlength attribute


在那個問題中發現Javascript 計數回車是一個字符,而實際上它是兩個 ( \r\n ) ,這是為什么呢?

測試小提琴: http://jsfiddle.net/maniator/E527z/

出於未知原因,jQuery 始終將<textarea>值中的所有換行符轉換為單個字符。 也就是說,如果瀏覽器給它\r\n作為換行符,jQuery 確保它只是.val()的返回值中的\n (實際上,原因可能不是“未知”;可能是為了跨瀏覽器規范化結果,因為 IE 將換行符報告為 2 個字符長。)

出於“最大長度”的目的,Chrome 和 Firefox 都以相同的方式計算<textarea>標簽的長度。

但是,HTTP 規范堅持將換行符表示為\r\n 因此,jQuery、webkit 和 Firefox 都弄錯了。 字段投遞時,webkit和Firefox正確加了換行!

結果是,如果您的服務器端代碼確實具有固定的字段值的最大大小,則<textarea>標記上的“maxlength”幾乎毫無用處。

編輯這在 2015 年仍然是一個問題——至少在 Chrome 45.0.2454 和 IE 11.0.9600 上是這樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM