All pastes #178001 Raw Edit

getSelectionPos

public javascript v1 · immutable
#178001 ·published 2006-09-20 22:05 UTC
rendered paste body
function 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;	}(....)}