如何解决Firefox和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插件,那么我已经创建了一个用于处理textarea选择的功能:http://code.google.com/ p / rangyinputs /
更新
请注意,jQuery的val()
方法将浏览器之间的换行符差异标准化(在我看来,这是无济于事的,因为发送到服务器的值未标准化),因此换行符始终为\\n
。我的插件和您的函数都返回相对于textarea原始值属性的插入位置,而不是jQuery的规范化值,因此,如果要使用插入位置来操作该值,则需要使用use5ѭ而不是$textarea.val()
。
您可以在这里看到这种差异:http://jsfiddle.net/MyR7J/2/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。