什么字符代表文本区域中的新行

时间:2013-01-08 14:27:28

标签: html textarea newline

快一点,但想确保我抓住跨平台变体。

我喜欢将输入文本区域的新行转换为[逗号],以便输出可以在一行中表示,我的问题......

目前,从谷歌浏览器发送,当我查看该值时,我发现它使用\r\n表示新行。如果我替换\r\n我知道它适用于Windows 7上的chrome,但是对于其他平台,其他浏览器在文本区域内作为新行插入的内容是否有变化?

4 个答案:

答案 0 :(得分:88)

根据HTML规范,浏览器需要规范化用户输入到CR LF(\r\n)的换行符,我不认为任何浏览器都会出错。参考:HTML 4.01规范中的第17.13.4节Form content types

在HTML5草案中,情况更复杂,因为它们还处理浏览器内部的进程,而不仅仅是在提交表单时发送到服务器端表单处理程序的数据。根据它们(和浏览器实践),textarea元素值存在三种变体:

  1. 用户输入的原始值,非标准化;它可能包含CR,LF或CR LF对;
  2. 内部值,称为“API值”,其中换行符规范化为LF(仅限);
  3. 提交值,其中换行符按照Internet约定规范化为CR LF对。

答案 1 :(得分:10)

特别谈论网络表单中的textareas,对于所有平台上的所有textareas,\r\n都可以。{/ p>

如果您使用其他任何内容,则会导致Windows平台上的剪切和粘贴问题。

在提交表单时,换行符将由Windows浏览器进行规范化,但如果您将表单发送到具有\n换行符的浏览器,您会发现文本之间无法正确复制和粘贴示例记事本和textarea。

有趣的是,尽管Unix行结束约为\n,但大多数基于文本的网络协议(包括HTTP,SMTP,POP3,IMAP等)的标准仍然是\r\n。是的,它可能没有多大意义,但这是你的历史和不断发展的标准!

答案 2 :(得分:6)


- Line Feed and 
 Carriage Return

这些HTML entities会在文本区域内插入新行或回车符。

答案 3 :(得分:5)

根据HTML5 spec,似乎textarea元素的value属性应返回' \ r \ n'换行:

  

元素value被定义为元素的原始值   应用以下转换:

     

替换每次出现的" CR" (U + 000D)字符未跟随   a" LF" (U + 000A)字符,以及每次出现的" LF" (U + 000A)   字符前面没有" CR" (U + 000D)字符,由a   由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& #39;);)自从v9以来,IE就是这样。在此之前,IE正在回归' \ r \ n'转换' \ r'和' \ n'到' \ r \ n' (这是HTML5规范)。所以......我很困惑。

为了安全起见,通常使用' \ r?\ n'在正则表达式中而不仅仅是' \ n',但如果必须知道换行符序列,则可以在应用程序中执行上述测试。