要重新创建问题,请访问http://jsfiddle.net/BsJ6V/并在开始正文标记后面键入任何字符(例如,如果您输入h字符,则为<body>h
)。
警告框将显示插入符号位置。当您在Firefox中运行时,插入位置为56 ,当您在IE中运行时,它是60 。你能问一下这件事是什么吗?
修改 :: UPDATED LINK
答案 0 :(得分:1)
不同之处在于IE将textarea中的每个换行符计为两个字符(CRLF或\r\n
),而Firefox则将其计为单个LF(\n
)字符。
如果有前导换行符,您的函数将无法在IE中获得正确的插入符号位置。要看到这一点,请在第一个jsFiddle示例中将插入符号放在textarea的开头,然后按几次返回并尝试键入其中一个空行。要解决此问题,您可以使用a function I've posted before on Stack Overflow或者如果您更喜欢使用jQuery插件,我创建了一个用于处理textarea选择的插件:http://code.google.com/p/rangyinputs/
<强>更新强>
请注意,jQuery的val()
方法规范了浏览器之间换行符的这种差异(在我看来,无用,因为发送到服务器的值没有规范化),因此换行总是{{1 }}。我的插件和函数都返回相对于textarea的原始值属性的插入位置,而不是jQuery的规范化值,因此如果使用插入位置操作值,则需要使用\n
而不是{{ 1}}。
您可以在此处看到这种差异:http://jsfiddle.net/MyR7J/2/