На самом деле я пытаюсь установить курсор на конкретный узел внутри HTML-редактора (который использует contateditable iframe). Например, у меня есть несколько абзацев, и я хочу, чтобы курсор переместился в начало предыдущего абзаца.
К сожалению, объект диапазона Internet Explorer не поддерживает setStartBefore
и setStartAfter
. Проект ierange не является вариантом - решение, которое я ищу, должно работать с IE из коробки.
Как установить курсор в IE?
В Firefox решение простое:
// sets the cursor position (start defines, if cursor is needed at the start or end of the node)
function setCursor(editor, node, start){
var tn = editor.getDoc().createTextNode("."); // gets the editors document
if (start){
node.insertBefore(tn, node.firstChild);
}
else node.appendChild(tn);
rng = editor.selection.getRng(); // gets the browsers range object for the users selection
rng.selectNode(tn);
rng.setStartBefore(tn);
rng.setStartAfter(tn);
ed.selection.setRng(rng);
node.removeChild(tn); // removes the caret node - curser is placed now
}