在Windows中的Firefox上不一致的行结束行为

时间:2011-01-25 21:12:58

标签: javascript windows http firefox newline

我们遇到了一个非常奇怪的问题,当我们发帖时,行结尾为\r\n,但是当我们使用javascript提取值时,它只会获得\n。这导致了问题,因为对于我们的系统,创建将执行正常的表单发布,并且更新将从表单中提取值以构建ajax请求。之后,我们正在对给定的字段进行字符串比较,并且看到\r之间存在或不存在这种奇怪的混合。

IE处理这个问题(总是\r\n),Windows上的FF将使用\r\n提交,而javascript只会报告\n。什么是真正的FREAKIN STRANGE虽然是在linux上,firefox和chrome都将发布\r\n,而document.getElementById('text-area-id').value只会显示\n

这是HTTP规范的一些尘土飞扬的角落还是类似的东西?浏览器是否实现了这一点,以便Windows服务器不会死?有什么方法可以解决它,然后对每个领域进行消毒吗?我所期望的是JS和HTTP POST的行为方式相同,并且在它们恰好在的任何系统上使用系统默认值。

1 个答案:

答案 0 :(得分:0)

\r显然是DOM中的非法字符,这就是为什么你不会从脚本中看到它。设置textarea的值时,Firefox会将平台换行符转换为\n。另一方面,提交表单时认为需要使用HTTP换行标准,显然是\r\n。所以它在发送表单之前将它们全部转换。