//Function to insert element in required position function insertElementPosition(docWindow, insertElement){ var area = docWindow.getSelection(); var range = area.getRangeAt(0); var editorPosition = range.startContainer; var pos = range.startOffset; area.removeAllRanges(); range.deleteContents(); range = document.createRange(); if (editorPosition.nodeType==3 && insertElement.nodeType==3) { editorPosition.insertData(pos, insertElement.nodeValue); range.setEnd(editorPosition, pos + insertElement.length); range.setStart(editorPosition, pos + insertElement.length); }else{ var afterElement; if (editorPosition.nodeType==3){ var textElement = editorPosition; var text = textElement.nodeValue; var textBefore = text.substr(0,pos); var textAfter = text.substr(pos); var beforeNode = document.createTextNode(textBefore); var afterElement = document.createTextNode(textAfter); editorPosition = textElement.parentNode; editorPosition.insertBefore(afterElement, textElement); editorPosition.insertBefore(insertElement, afterElement); editorPosition.insertBefore(beforeNode, insertElement); editorPosition.removeChild(textElement); }else{ afterElement = editorPosition.childNodes[pos]; editorPosition.insertBefore(insertElement, afterElement); } range.setEnd(afterElement, 0); try{range.setStart(afterElement, 0);}catch(exception){} } area.removeAllRanges(); area.addRange(range); }