firefox和IE上的不同插入位置

时间:2011-04-18 05:21:34

标签: javascript cross-browser caret

要重新创建问题,请访问http://jsfiddle.net/BsJ6V/并在开始正文标记后面键入任何字符(例如,如果您输入h字符,则为<body>h)。

警告框将显示插入符号位置。当您在Firefox中运行时,插入位置为56 ,当您在IE中运行时,它是60 。你能问一下这件事是什么吗?

修改 :: UPDATED LINK

1 个答案:

答案 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/