dijit.range.ie.setEndPoint
dojo.require("dijit._editor.range");
defined in dijit/_editor/range.js
Usage
function (range, container, offset) (view source)
var atmrange = range.duplicate(), node, len; if(container.nodeType!=3){ //normal node atmrange.moveToElementText(container); atmrange.collapse(true); if(offset == container.childNodes.length){ if(offset > 0){ //a simple atmrange.collapse(false); won't work here: //although moveToElementText(node) is supposed to encompass the content of the node, //but when collapse to end, it is in fact after the ending tag of node (collapse to start //is after the begining tag of node as expected) node = container.lastChild; len = 0; while(node && node.nodeType == 3){ len += node.length; container = node; //pass through node = node.previousSibling; } if(node){ atmrange.moveToElementText(node); } atmrange.collapse(false); offset = len; //pass through }else{ //no childNodes atmrange.moveToElementText(container); atmrange.collapse(true); } }else{ if(offset > 0){ node = container.childNodes[offset-1]; if(node.nodeType==3){ container = node; offset = node.length; //pass through }else{ atmrange.moveToElementText(node); atmrange.collapse(false); } } } } if(container.nodeType==3){ var prevnodeobj = dijit.range.adjacentNoneTextNode(container); var prevnode = prevnodeobj[0]; len = prevnodeobj[1]; if(prevnode){ atmrange.moveToElementText(prevnode); atmrange.collapse(false); //if contentEditable is not inherit, the above collapse won't make the end point //in the correctly position: it always has a -1 offset, so compensate it if(prevnode.contentEditable!='inherit'){ len++; } }else{ atmrange.moveToElementText(container.parentNode); atmrange.collapse(true); } offset += len; if(offset>0){ if(atmrange.moveEnd('character',offset) != offset){ alert('Error when moving!'); } atmrange.collapse(false); } } return atmrange;
parameter | type | description |
---|---|---|
range | ||
container | ||
offset |