rendered paste bodyfunction doCommand(command){ out(); if(document.all) { var obj = new ActiveXObject("Microsoft.XMLHTTP"); } else { var obj = new XMLHttpRequest(); } editor = document.getElementById("editeur").contentWindow; form_text = document.getElementById("dst_edit").textContent; selectedText = editor.getSelection(); rangeObj = selectedText.getRangeAt(0); selRange = rangeObj.startContainer; selectedObj = selRange.parentNode; allLength = selectedObj.innerHTML.length; selLength = selectedText.toString().length; function find_real_start_offset(method, previous_obj) { if(method == "previous") { now_obj = previous_obj.previousSibling; if(now_obj.nodeName != "#text") { tmp_attr = "<"+ now_obj.nodeName; if(now_obj.attributes && now_obj.attributes.length != 0) { attr = now_obj.attributes; if(attr.nodeName && attr.nodeName != "_moz_dirty") { for(i_pos = 0; (i_pos < attr.length && attr[i_pos].nodeName != "_moz_dirty"); i_pos++) { tmp_attr += " "+ attr[i_pos].nodeName +"=\""+ attr[i_pos].nodeValue +"\""; } } } tmp_attr += ">"+ now_obj.textContent +"</"+ now_obj.nodeName +">"; } else { tmp_attr = now_obj.textContent; } real_start_offset = tmp_attr.length; if(now_obj.previousSibling && now_obj.previousSibling.nodeName != "HEAD") { real_start_offset += find_real_start_offset("previous", now_obj); } else if(now_obj.parentNode && now_obj.parentNode.nodeName != "BODY") { real_start_offset += find_real_start_offset("parent", now_obj); } return real_start_offset; } else if(method == "parent") { now_obj = previous_obj.parentNode; tmp_attr = "<"+ now_obj.nodeName; if(now_obj.attributes && now_obj.attributes.length != 0) { attr = now_obj.attributes; if(attr.nodeName && attr.nodeName != "_moz_dirty") { for(i_pos = 0; (i_pos < attr.length && attr[i_pos].nodeName != "_moz_dirty"); i_pos++) { tmp_attr += " "+ attr[i_pos].nodeName +"=\""+ attr[i_pos].nodeValue +"\""; } } } tmp_attr += ">"; real_start_offset = tmp_attr.length; if(now_obj.previousSibling && now_obj.previousSibling.nodeName != "HEAD") { real_start_offset += find_real_start_offset("previous", now_obj); } else if(now_obj.parentNode && now_obj.parentNode.nodeName && now_obj.parentNode.nodeName != "BODY") { real_start_offset += find_real_start_offset("parent", now_obj); } return real_start_offset; } } if(selRange.previousSibling && selRange.previousSibling != "HEAD") { start_offset = find_real_start_offset("previous", selRange) + rangeObj.startOffset; } else if(selRange.parentNode && selRange.parentNode.nodeName && selRange.parentNode.nodeName != "BODY") { start_offset = find_real_start_offset("parent", selRange) + rangeObj.startOffset; } else { start_offset = rangeObj.startOffset; }(....)}