Click here to Skip to main content
15,884,177 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
I am working with a contenteditable div that will have the option to have inline html elements such as tags "<p > <font>" in the text flow.

At certain points I need to grab the caret position, the caret is after an html child element.

i am using following code for FF but not find any solution for Internet Explorer

C#
 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;
}


i found that document.selection; works on InternetExpolrer but i don't think it will work for me

can any one have any work around for me.

in below example my cursor position is at between 't' and 'w' in <p>two</p>
<div contenteditable="true"><p>one<br><p>t|wo</p></p></div>
i suppose to need number 14 in above example as i need to perform some operation at that point i am using this contenteditable div as RichTextbox with my custom style apply to it
Posted
Updated 4-Jun-12 2:04am
v7

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900