Задайте позиция на каретката в слоя div с възможност за редактиране на съдържание в Chrome/webkit

Опитвам се да задам позицията на каретката в слой div с възможност за редактиране на съдържание и след малко търсене в мрежата и експериментиране го накарах да работи във firefox, използвайки това:

function set(element,position){
    element.focus();
    var range= window.getSelection().getRangeAt(0);
    range.setStart(element.firstChild,position);
    range.setEnd(element.firstChild,position);
}

[...]

set(document.getElementById("test"),3);

Но в Chrome/webkit избира цялото съдържание в div. Това грешка с webkit ли е или правя нещо нередно?
Благодаря ви предварително.


person Alex    schedule 13.04.2010    source източник


Отговори (1)


Отместването на границата на диапазона в рамките на възел е само отместване на символ, ако възелът е текстов възел. Ако възелът е елемент, отместването е броят дъщерни възли преди границата.

Например, ако имате HTML

<div id="myDiv">One <b>two</b> three</div>

... и създавате диапазон, както следва:

var range = document.createRange();
var myDiv = document.getElementById("myDiv");
range.setStart(myDiv, 1);
range.setEnd(myDiv, 1);

... ще получите Range, който започва и завършва веднага след първото дете на div, което е текстов възел:

<div id="myDiv">One |<b>two</b> three</div>
person Tim Down    schedule 14.04.2010