我有这样一段代码,用于获取可编辑div中光标的位置:
function getMeCurPos(element){
if (typeof window.getSelection != "undefined") {
var range = window.getSelection().getRangeAt(0);
var preCaretRange = range.cloneRange();
preCaretRange.selectNodeContents(element);
preCaretRange.setEnd(range.endContainer, range.endOffset);
caretOffset = preCaretRange.toString().length;
return caretOffset;
}
}
问题在于,caretOffset返回的只计算文本内容而不是HTML标签。例如:
考虑我的可编辑div中的这个字符串:
Hey <b>jony</b>, whats goin on in the | party
*光标用字符|
表示。执行getMeCurPos(ele)返回:
30
,但它应该返回37
。它没有计算b
标签。