从鼠标点击中获取输入文本位置(以字符为单位)

JavaScript: Get input text position (in chars) from mouse click

本文关键字:位置 字符 为单位 文本 输入 鼠标 获取      更新时间:2023-09-26

我有一个HTML <input type="text"><textarea>随机存在的文本,说[12345678]或[12345
67890]
我有一个任意定位鼠标向下点击事件在这个文本。我需要将2D的鼠标向下点击页面坐标转换为1D的基于字符的文本坐标,以便JS正确定位插入符号。显然浏览器内部有一些函数在做这种转换;把这个叫做。输入有一个标准的可变宽度字体,可以在任何级别的放大。浏览器限制为FireFox。我们有JQuery和JCursor

背景:输入字段是在深度嵌套的框中动态生成的,每个框都有粗糙的过载。遗留代码与最新FF实现的结合在某种程度上窃取了鼠标按下的传播/焦点,从输入元素弹出到它遇到默认的浏览器set- insert动作,而这并没有发生。我需要自己设置插入符号。

这个例子的一个解决方法是在事件上使用2级stopPropagation()调用,同时为0级onmousedown处理程序返回true(继续传播)。这避免了进一步的第2级调用冒泡[进入父结构的遗留代码],同时仍然确保本机默认操作[放置插入符号]实际上在冒泡阶段之后发生。然而,它仍然没有回答原来的问题,这有其他的应用。