繁体   English   中英

Firefox和IE上不同的插入符位置

[英]different caret position on firefox and IE

要重现此问题,请访问http://jsfiddle.net/BsJ6V/并在开始body标记后键入任何字符(例如,如果键入h字符,则为<body>h )。

警报框将显示插入符的位置。 当您在Firefox中运行它时,插入符位置为56 ,而在IE中运行时,插入符位置 为60 请问是怎么回事?

编辑 :: 更新链接

差异是因为IE将textarea中的每个换行符计算为两个字符(CRLF或\\r\\n ),而Firefox将其视为单个LF( \\n )字符。

如果出现换行符,您的函数将无法在IE中获得正确的插入符号位置。 要看到这一点,请在您的第一个jsFiddle示例中将插入标记放在文本区域的开头,然后按回车几次,然后尝试输入其中的空行。 要解决此问题,您可以使用我之前在Stack Overflow上发布的功能,或者如果您喜欢jQuery插件,那么我已经创建了一个用于处理文本区域选择的功能: http : //code.google.com/p/ rangyinputs /

更新

请注意,jQuery的val()方法将浏览器之间的换行符差异标准化(在我看来,这是无济于事的,因为发送到服务器的值未标准化),因此换行符始终为\\n 我的插件和您的函数都返回相对于textarea原始值属性的插入符号位置,而不是jQuery的规范化值,因此,如果要使用插入符号位置来操作该值,则需要使用$textarea[0].value而不是$textarea.val()

您可以在这里看到这种差异: http : //jsfiddle.net/MyR7J/2/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM