Javascript 按坐标获取contenteditable中的光标位置

Javascript 按坐标获取contenteditable中的光标位置,javascript,position,cursor,mouse,contenteditable,Javascript,Position,Cursor,Mouse,Contenteditable,我使用contenteditable元素和一些span元素的拖放功能开发应用程序。目标是将span元素拖放到contenteditable元素中 我现在拥有的—在拖动时,在document.onmouseupevent上,我获得了目标元素(来自event.toElement属性),因此我可以轻松地从父元素中删除删除的元素,并将其追加到删除的位置 我需要的是-给定鼠标事件坐标的contenteditable元素的光标/光标位置(相当于输入selectionStart属性)。这很棘手 我知道有win

我使用
contenteditable
元素和一些span元素的拖放功能开发应用程序。目标是将span元素拖放到
contenteditable
元素中

我现在拥有的—在拖动时,在
document.onmouseup
event上,我获得了目标元素(来自
event.toElement
属性),因此我可以轻松地从父元素中删除删除的元素,并将其追加到删除的位置

我需要的是-给定鼠标事件坐标的
contenteditable
元素的光标/光标位置(相当于输入
selectionStart
属性)。这很棘手

我知道有
window.getSelection()
,它工作得非常好,但前提是光标确实在那里。当我进行拖放时,光标不在
contenteditable
元素中

我尝试在拖放时运行
event.toElement.focus()
,但光标当然会转到位置0。我还玩过
document.element frompoint(x,y)
但它返回整个元素,我可以在它上面触发
click()
,但结果相同-


有没有办法通过坐标获得光标位置?

嗨,Mateus,你解决了这个问题吗?嘿,我们使用循环来解决这个问题,从contenteditable中删除最后一个字符,并检查元素的新宽度是否低于鼠标事件相对X坐标。发生这种情况时,您可以将contenteditable文本长度作为光标位置并恢复原始内容。它仅适用于单个文本行元素。不完美,但在几周内工作得足够好,然后我们总体上放弃了该功能。嗨,Mateus,你解决了这个问题吗?嗨,我们使用循环来解决它,从contenteditable中删除最后一个字符,并检查元素的新宽度是否低于鼠标事件相对X坐标。发生这种情况时,您可以将contenteditable文本长度作为光标位置并恢复原始内容。它仅适用于单个文本行元素。不是很完美,但在几周内工作得很好,然后我们一般都放弃了这个功能。