可持续编辑的Div-根据innerHTML位置表示的光标位置 [英] Contenteditable Div - Cursor position in terms of innerHTML position

查看:0
本文介绍了可持续编辑的Div-根据innerHTML位置表示的光标位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我做了研究,在StackOverflow上遇到了这些问题,人们问了同样的问题,但问题是他们想要以x和y坐标或从左侧开始的列的形式获得位置。我想知道光标相对于div的innerHTML的位置。

例如:

innerHTML = "This is the innerHTML of the <b>div</b> and bla bla bla..."
                                                        ^
                                                  Cursor is here

所以我希望这个例子的结果是44。怎么做?

推荐答案

var target = document.createTextNode("u0001");
document.getSelection().getRangeAt(0).insertNode(target);
var position = contentEditableDiv.innerHTML.indexOf("u0001");
target.parentNode.removeChild(target);

这会临时插入一个包含不可打印字符(u0001)的虚拟文本节点,然后在divinnerHTML中查找该字符的索引。

在很大程度上,这会使DOM和当前选择保持不变,但可能有一个很小的副作用:如果光标位于单个文本节点的文本中间,则该节点将被分成两个连续的文本节点。通常情况下,这应该是无害的,但请在您的特定应用程序上下文中记住这一点。

更新:原来您可以使用Node.normalize()合并连续的文本节点。

这篇关于可持续编辑的Div-根据innerHTML位置表示的光标位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆