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 关注
- 555 浏览
相关问题推荐
添加回答
举报