Obtener la posición HTML en DIV contenteditable

Tengo problemas para averiguar cómo obtener la posición de intercalación en un contenedor DIV que contiene tags HTML.

Estoy usando esta función de JavaScript para hacer eso:

function getCaretPosition() { if (window.getSelection && window.getSelection().getRangeAt) { var range = window.getSelection().getRangeAt(0); var selectedObj = window.getSelection(); var rangeCount = 0; var childNodes = selectedObj.anchorNode.parentNode.childNodes; for (var i = 0; i < childNodes.length; i++) { if (childNodes[i] == selectedObj.anchorNode) { break; } if(childNodes[i].outerHTML) { rangeCount += childNodes[i].outerHTML.length; } else if(childNodes[i].nodeType == 3) { rangeCount += childNodes[i].textContent.length; } } return range.startOffset + rangeCount; } return -1; } 

Sin embargo, encuentra una posición de intercalación del texto en mi contenedor DIV, cuando necesito encontrar la posición de intercalación, incluidas las tags HTML. Por ejemplo:

 
Text goes here along with some HTML tags.
;

( Tenga en cuenta que las tags HTML son tags normales y no se muestran en la pantalla cuando la función devuelve la posición de cursor )

Si hago clic derecho entre H y TML, la función mencionada encontrará la posición de intercalación sin ningún problema. Pero estoy obteniendo los contenidos de la casilla DIV en formato HTML (incluidas todas las tags), y si quiero insertar algo en la posición de esa preocupación, algunos o muchos caracteres desaparecerán.

Revisé muchas publicaciones, pero todo lo que pude encontrar es