JavaScript:通过鼠标单击获取输入文本位置(以字符为单位)
Posted
技术标签:
【中文标题】JavaScript:通过鼠标单击获取输入文本位置(以字符为单位)【英文标题】:JavaScript: Get input text position (in chars) from mouse click 【发布时间】:2012-12-21 20:19:34 【问题描述】:我有一个带有随机现有文本的 html <input type="text">
或 <textarea>
,比如说
[12345678] 或
[12345
67890]
我在此文本中有一个任意定位 mousedown 单击事件。我需要将 2D mousedown 点击页面坐标转换为 1D 基于字符的文本坐标,以便 JS 正确定位插入符号。显然,浏览器有一些在内部进行这种转换的功能;最好叫这个。输入具有标准的可变宽度字体,并且可以处于任何放大级别。浏览器仅限于 FireFox。我们有 JQuery 和 JCursor。
背景:输入字段是在深度嵌套的盒子中动态生成的,每个盒子都有粗糙的重载。遗留代码与最新的 FF 实现的结合以某种方式窃取了鼠标从输入元素冒出的时间和它点击默认浏览器设置插入符号动作的时间之间的 mousedown 传播/焦点,这没有发生。我需要自己设置插入符号。
【问题讨论】:
【参考方案1】:此示例的解决方法是对事件使用 2 级 stopPropagation() 调用,同时为 0 级 onmousedown 处理程序返回 true(继续传播)。这避免了在冒泡 [进入父结构的遗留代码] 中的进一步级别 2 调用,同时仍然确保本机默认操作 [放置插入符号] 在冒泡阶段之后确实发生。但是,它仍然没有回答原来的问题,它还有其他应用程序。
【讨论】:
以上是关于JavaScript:通过鼠标单击获取输入文本位置(以字符为单位)的主要内容,如果未能解决你的问题,请参考以下文章