Establecer la posición de caret en la capa div editeditable en Chrome / webkit

Estoy tratando de establecer la posición de caret en una capa div contenteditable, y después de buscar un poco en la web y experimentar, conseguí que funcionara en Firefox usando esto:

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); 

Pero en Chrome / webkit selecciona todo el contenido en el div. ¿Es esto un error con el webkit o estoy haciendo algo mal?
Gracias de antemano.

El desplazamiento de un límite de rango dentro de un nodo es solo un desplazamiento de caracteres si el nodo es un nodo de texto. Si el nodo es un elemento, el desplazamiento es el número de nodos secundarios antes del límite.

Por ejemplo, si tiene HTML

 
One two three

… y creas un rango de la siguiente manera:

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

… obtendrás un Rango que comienza y termina inmediatamente después del primer hijo del div, que es un nodo de texto:

 
One |two three