ser*_*ach 5 javascript css jquery internet-explorer
我们在Internet Explorer中有一个多行文本区域.
如果我们在下一个之后检查它的内容,那么一切都是正确的(textarea中没有额外的回车):
document.getElementById( 'text-area' ).value = "Hello,\nWorld!";
Run Code Online (Sandbox Code Playgroud)
但是如果我们将插入符号设置为第二行的起始位置(在Internet Explorer中,而不是在代码中)并按Tab键,则会有一个额外的字符串字符(下面的keydown上有一个字符串转储):
value[0]='H'
value[1]='e'
value[2]='l'
value[3]='l'
value[4]='o'
value[5]=','
value[6]='\r'
value[7]='\n'
value[8]='W'
value[9]='o'
value[10]='r'
value[11]='l'
value[12]='d'
value[13]='!'
Run Code Online (Sandbox Code Playgroud)
这是一个问题,因为其他浏览器不会插入额外的回车.
你知道如何在Internet Explorer中阻止这种情况吗?借助CSS或Javascript.
你不能阻止它,你可能不应该.尽管IE和其他浏览器报告<textarea>元素值的方式不同,但是当提交元素周围的表单时,所有浏览器实际上都包含"\ r \n"表示值中的所有硬换行符.换句话说,即使Firefox报告的换行符只包含"\n",但它实际上对你说谎 - 当表单发布时,值也会出现"\ r \n".
出于某种原因,jQuery通过剥离"\ r"字符来规范浏览器的行为,这当然是错误的.这意味着当您尝试计算字符(如Stackoverflow注释框)时,您必须考虑到每个单个"\n"字符实际上代表服务器上的两个字符这一事实.因此,您必须在服务器上删除"\ r",或者更好地在客户端验证代码中对其进行说明.
| 归档时间: |
|
| 查看次数: |
4369 次 |
| 最近记录: |