我知道这已经一岁了,但是这篇文章是关于找到Caret职位的许多问题的最佳搜索结果,我发现这很有用。
在内容可编辑div中将元素从一个位置拖放到另一个位置后,我试图使用上述Tim的出色脚本来查找新的光标位置。它在FF和IE中完美运行,但是在Chrome中,拖动动作会突出显示拖动开始和结束之间的所有内容,从而导致返回caretOffset
的内容太大或太小(按所选区域的长度计算)。
我在第一条if语句中添加了几行,以检查是否已选择文本并相应地调整结果。新的声明如下。原谅我在此处添加此内容是否不合适,因为这不是OP想要做的,但是正如我所说,对与Caret职位相关的信息的多次搜索将我带到了这篇文章,因此(希望)有可能帮助其他人。
蒂姆的第一条if语句,增加了行(*):
if (typeof window.getSelection != "undefined") {
var range = window.getSelection().getRangeAt(0);
var selected = range.toString().length;
var preCaretRange = range.cloneRange();
preCaretRange.selectNodeContents(element);
preCaretRange.setEnd(range.endContainer, range.endOffset);
if(selected){
caretOffset = preCaretRange.toString().length - selected;
} else {
caretOffset = preCaretRange.toString().length;
}
}