1

我需要将光标设置在特定的字符偏移处。例如,在下面的示例中,我想将其设置在“a”和“b”之间。

<ul contenteditable = true >
    <li id = "test">abcdef</li>
</ul>

我之前问过,得到了这个小提琴:http: //jsfiddle.net/5a9uD/1/

这对于给定的示例以及我当时需要的东西非常有用。但它不适用于此示例:http: //jsfiddle.net/mdwWN/ 它在以下位置获得 IndexSizeError

range   = sel.getRangeAt(0);
4

1 回答 1

1

您只需将文本容器 childNodes[0]传递给range.setStart函数即可。看一下这个。

function setSelectionRange(aNode, childElem, aOffset) {

  aNode.focus();

  var sel = window.getSelection(),
  range = sel.getRangeAt(0);

  range.collapse(true);

  range.setStart(childElem.childNodes[0], aOffset),

  sel.removeAllRanges();
  sel.addRange(range);
}

var container = document.getElementById("test");
var childElement = document.getElementById('item1');
setSelectionRange(container, childElement, 1);

这是工作小提琴

于 2013-06-28T06:52:02.013 回答