我知道这已经有一年了,但这篇文章是很多关于查找插入符号位置的问题的热门搜索结果,我发现这很有用。
在内容可编辑的 div 中将元素从一个位置拖放到另一个位置后,我试图使用 Tim 上面出色的脚本来查找新的光标位置。它在 FF 和 IE 中完美运行,但在 Chrome 中,拖动操作突出显示了拖动开始和结束之间的所有内容,这导致返回caretOffset
的结果太大或太小(按所选区域的长度)。
我在第一个 if 语句中添加了几行,以检查是否选择了文本并相应地调整结果。新声明如下。如果在此处添加此内容不合适,请原谅我,因为这不是 OP 试图做的,但正如我所说,多次搜索与插入符号位置相关的信息使我找到了这篇文章,所以它(希望)可能会帮助其他人.
Tim 的第一个 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);
caretOffset = preCaretRange.toString().length - selected; // *
}