3 回答

TA貢獻1934條經驗 獲得超2個贊
根據HTML規范,要求瀏覽器規范用戶輸入CR LF(\r\n
)中的換行符,而且我認為任何瀏覽器都不會出錯。參考:條款17.13.4 HTML 4.01規范中的表單內容類型。
在HTML5草案中,情況更為復雜,因為它們還處理瀏覽器內部的進程,而不僅僅是處理提交表單時發送到服務器端表單處理程序的數據。根據他們(和瀏覽器的實踐),textarea
元素值存在三種變體:
用戶輸入的未標準化的原始值;它可能包含CR,LF或CR LF對;
內部值,稱為“ API值”,其中將換行符標準化為LF(僅);
提交值,其中根據Internet約定將換行符標準化為CR LF對。

TA貢獻1876條經驗 獲得超7個贊
根據HTML5規范,看來textarea元素的value屬性應該為換行符返回'\ r \ n':
使用以下轉換將元素的值定義為元素的原始值:
替換每次出現的“ CR”(U + 000D)字符,然后替換為“ LF”(U + 000A)字符,以及每次出現的“ LF”(U + 000A)字符,但不替換“ CR”( U + 000D)字符,由兩個字符組成的字符串,由U + 000D的CARRIAGE RETURN“ CRLF”(U + 000A)字符對組成。
通過鏈接到“值”,可以清楚地看到它引用了在javascript中訪問的value屬性:
表單控件具有一個值和一個檢查項。(后者僅由輸入元素使用。)這些元素用于描述用戶如何與控件進行交互。
但是,在所有五種主要瀏覽器(使用Windows,2015年11月27日)中,如果將'\ r \ n'寫入文本區域,則會刪除'\ r'。(要進行測試:var e = document.createElement('textarea'); e.value ='\ r \ n'; alert(e.value =='\ n');)從v9開始,這對于IE就是如此。在此之前,IE返回“ \ r \ n”并將“ \ r”和“ \ n”都轉換為“ \ r \ n”(這是HTML5規范)。所以...我很困惑。
為了安全起見,通常在正則表達式中使用'\ r?\ n'而不是僅使用'\ n'就足夠了,但是如果必須知道換行符序列,則可以在應用程序中執行上述測試。
- 3 回答
- 0 關注
- 594 瀏覽
相關問題推薦
添加回答
舉報