0

以下の a と b の間にカーソルを設定するにはどうすればよいですか?

<div contenteditable = true id = "test">
  abcdefg
</div>

範囲で遊んでみましたが、何もうまくいきません。以下のコードはテキスト全体を選択し、カーソルはありません。(このコードは Chrome 用です)

sel =  window.getSelection();
range =  document.createRange();
node = document.getElementById("test");
range.setStart(node, 0);
range.setEnd(node, 1);
sel.addRange(range);
4

1 に答える 1

0

これはうまくいくはずです:

function setSelectionRange(aNode, aOffset) {

    aNode.focus();

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

    range.collapse(true);
    range.setStart(aNode.childNodes[0], aOffset),

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

setSelectionRange(document.getElementById("test"), 1);

http://jsfiddle.net/5a9uD/1/

MDN ドキュメントhttps://developer.mozilla.org/en-US/docs/Web/API/range.setStartを見ると、このインターフェイスが要素ではなくノードを使用していることがわかります。

于 2013-05-24T18:45:44.827 に答える