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 に答える