1

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

一个警告框将显示插入符号的位置。当你在 Firefox 中运行它时,插入符号的位置是 56,当你在 IE 中运行它时,它是 60。请问是怎么回事?

编辑:: 更新链接

4

1 回答 1

1

不同之处在于 IE 将 textarea 中的每个换行符计为两个字符(CRLF 或\r\n),而 Firefox 将其计为单个 LF ( \n) 字符。

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

更新

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

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

于 2011-04-18T08:23:51.763 回答