获取精确的光标位置

3
如何在tinyMCE中获取当前插入符号的位置?参考这个问题“在TinyMCE中获取光标位置或所在行数”,其中提到了如何获取tinyMCE中的行号,但我找不到任何有关如何获取实际插入符位置的参考。我需要这个功能,因为我将tinyMCE用作实时协作文档,因此需要知道客户端在同一文档中编写时插入符的位置,以便我在某些事件(按键、单击等)上广播插入符位置,并在该位置为一个客户端绘制自定义插入符,以指示其他客户端正在编写或编辑的位置。

我找到的唯一解决方案是在内容后面添加一个span,选择它,然后将其删除,如下所示:

     <span id="caret_pos_holder"></span>

插入后,执行以下操作...

     ed.selection.select(ed.dom.select('span#caret_pos_holder')[0]); //select the span
     ed.dom.remove(ed.dom.select('span#caret_pos_holder')[0]); //remove the span

这是唯一的解决方法吗?

编辑:实际上上述代码只是将光标定位到内容的末尾,我已经使用书签来解决了这个问题。

是否可能无法获取光标位置?


你希望得到什么?代表光标位置的单个数字吗? - Tim Down
好的,没错!这正是我需要的,因为我需要知道光标在用户输入或使用鼠标或箭头键移动光标时的位置。不过这似乎几乎是不可能的! - Bernice
是的,我知道@TimDown提到的那个方法。但是如果我找到了如何查找光标位置的方法,我认为我可以解决这个问题。例如,使用CSS进行预间距?所以它真的不存在吗? :( - Bernice
1
话虽如此,您可能会发现以下内容有用:https://dev59.com/Rl7Va4cB1Zd3GeqPMbqW#8757511 和 https://dev59.com/CGYr5IYBdhLWcg3wG2pI#13950376。您需要稍微调整一下,以使用iframe的文档而不是“document”。 - Tim Down
以上任何一种方法对您有用吗,@Bernice? - Charbel
显示剩余2条评论
1个回答

2
var sel = ed.selection.getSel();

将返回当前选择作为选择对象。然后可以查询sel.anchorNodesel.anchorOffset以获取当前插入符号位置。

向其他客户端广播此数据比尝试提取位置作为数字更容易,但如果确实必要,可以从上述位置向DOM中爬升。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接