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

Nin*_*oel 73 html textarea newline

快一点,但想确保我抓住跨平台的变化.

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

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

Juk*_*ela 93

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

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

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

  • HTML 5规范:http://www.w3.org/html/wg/drafts/html/CR/forms.html#the-textarea-element:`用户代理应该允许用户编辑,插入和删除文本,以及以"LF"(U + 000A)字符形式插入和删除换行符. (4认同)
  • 另一个问题是为什么当你得到textarea的".length"时,它将CR LF计为只有一个字符但是当你在服务器端检查时(例如,使用PHP strlen)它将是两个字符...... (3认同)
  • @ ComFreek上面的链接今天破了,使用:https://www.w3.org/TR/html5/forms.html#the-textarea-element (2认同)

Ben*_*Ben 11

在所有平台上,对于所有textareas,在Web表单中专门讨论textareas \r\n都可行.

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

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

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


Dam*_*Das 6


- Line Feed and 
 Carriage Return
Run Code Online (Sandbox Code Playgroud)

这些HTML实体 将在文本区域内插入新行或回车符.

  • 并没有真正回答这个问题 (10认同)
  • @Mahbub:这个答案目前有3个downvotes,因为它没有回答这个问题. (3认同)
  • @cherouvim,我不明白你为什么要对这个答案投票?你读过上面的问题了吗?如果不了解任何事情,请不要给出一些错误的评论回答! (2认同)

bar*_*cat 5

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

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

替换每次出现的"CR"(U + 000D)字符后面没有"LF"(U + 000A)字符,并且每次出现的"LF"(U + 000A)字符前面都没有"CR"( U + 000D)字符,由一个由U + 000D CARRIAGE RETURN"CRLF"(U + 000A)字符对组成的双字符串组成.

在链接到'value'后,可以清楚地看到它引用了javascript中访问的value属性:

表单控件具有值和检查.(后者仅由输入元素使用.)这些用于描述用户如何与控件交互.

但是,在所有五个主流浏览器中(使用Windows,2015年11月27日),如果'\ r \n'被写入textarea,则'\ 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',但如果必须知道换行序列,则可以在应用程序中执行上述测试.