我有一个 contenteditable div,我正在尝试使用以下代码在非 IE 浏览器上获取此 div 内的插入符号位置:
var caretPosition = 0, containerEl = null, sel, range;
if (window.getSelection)
{
sel = window.getSelection();
if (sel.rangeCount) {
range = sel.getRangeAt(0);
if (range.commonAncestorContainer.parentNode == editableDiv) {
caretPosition = range.endOffset;
}
}
}
它为单行上的文本正确返回插入符号位置,但我有多行文本,似乎对于每一新行,每行的插入符号位置以 0 开头。我的问题是我需要插入符号位置包括在前几行中找到的字符数,例如,对于第二行
caretPosition = 第一行的字符数 + 第二行插入符号前面的字符数。
它仅返回第二行插入符号前面的字符数。我怎样才能实现这种行为?或者我怎样才能有另一个范围,其中包括在上面的行中找到的文本?
任何建议都非常感谢,谢谢!