Другой подход:
function getTextNodes(node, nodeType, result){
var children = node.childNodes;
var nodeType = nodeType ? nodeType : 3;
var result = !result ? [] : result;
if (node.nodeType == nodeType) {
result.push(node);
}
for (var i=0; i<children.length; i++) {
result = this.getTextNodes(children[i], nodeType, result)
}
return result;
};
// get all Textnodes from lastchild, calc length
var textnodes = getTextNodes(ed.getBody().lastChild);
// set Cursor to last position
ed.selection.setCursorLocation(textnodes[textnodes.length-1], textnodes[textnodes.length-1].textContent.length );