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

只要快一点,但要确保我抓住了跨平台的变化。

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

目前,从谷歌浏览器发送,当我查看的价值,我发现它使用\r\n新行。 如果我replace\r\n我知道它可以在Windows 7上使用chrome,但其他平台呢,其他浏览器会在文本区域中插入一行作为新行吗?

根据HTML规范,浏览器需要规范化用户input到CR LF( \r\n )的换行符,我不认为任何浏览器都会出错。 参考:条款17.13.4在HTML 4.01规范中表单内容types 。

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

  1. 由用户input的原始值,未标准化; 它可能包含CR,LF或CR LF对;
  2. 内部值,称为“API值”,其中换行符被归一化为LF(仅);
  3. 提交值,按照互联网惯例,换行符被标准化为CR LF对。

在networking表格中专门讨论textareas,对于所有textareas,在所有平台上\r\n都可以工作。

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

当提交表单时,换行符会被windows浏览器规范化,但是如果用\n换行符将表单发送到浏览器,则会发现文本不会在例如记事本和textarea之间正确复制和粘贴。

有趣的是,尽pipeUnix行结束约定是\n ,但大多数基于文本的networking协议(包括HTTP,SMTP,POP3,IMAP等)的标准仍然是\r\n 。 是的,这可能没有什么意义,但这是你的历史和不断演变的标准!

 
- Line Feed and 
 Carriage Return 

作为HTML实体,它避免将/ r / n显示为字符

看来,根据HTML5规范 ,textarea元素的value属性应该为换行符返回'\ r \ n':

将元素的值定义为元素的原始值,并应用以下转换:

将每个出现的“CR”(U + 000D)字符都replace为“LF”(U + 000A)字符,并且每次出现“LF”(U + 000A)字符前都不要加上“CR”( U + 000D)字符,由一个由U + 000D CARRIAGE RETURN“CRLF”(U + 000A)字符对组成的双string组成。

在“值”的链接之后,清楚地表明它引用了javascript中访问的值属性:

表单控件有一个值和一个检查。 (后者仅由input元素使用)。这些用于描述用户如何与控件交互。

但是,在所有五个主要浏览器(使用Windows,11/27/2015)中,如果将'\ r \ n'写入文本区域,则会删除'\ r'。 (testing:var e = document.createElement('textarea'); e.value ='\ r \ n'; alert(e.value =='\ n');)从v9开始,IE就是这样。 在此之前,IE正在返回'\ r \ n',并将'\ r'和'\ n'转换为'\ r \ n'(这是HTML5规范)。 所以…我很困惑。

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