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元素值存在三种变体:
Ben*_*Ben 11
在所有平台上,对于所有textareas,在Web表单中专门讨论textareas \r\n都可行.
如果您使用其他任何内容,将导致Windows平台上的剪切和粘贴问题.
表单提交时,换行符将由Windows浏览器进行规范化,但如果您将表单发送到带有\n换行符的浏览器,您会发现文本不会在例如记事本和textarea之间正确复制和粘贴.
有趣的是,尽管Unix行终端约定存在\n,但大多数基于文本的网络协议(包括HTTP,SMTP,POP3,IMAP等)的标准仍然存在\r\n.是的,它可能没有多大意义,但这是你的历史和不断发展的标准!
- Line Feed and Carriage Return
Run Code Online (Sandbox Code Playgroud)
这些HTML实体 将在文本区域内插入新行或回车符.
看来,根据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',但如果必须知道换行序列,则可以在应用程序中执行上述测试.
| 归档时间: |
|
| 查看次数: |
112407 次 |
| 最近记录: |