Спасибо. Сейчас попробую через selection, но в целом вот такой пример нормально работает в хром
var rng = document.createRange();
rng.setStart(this.firstChild,3);
rng.setEnd(this.firstChild,3);
rng.surroundContents(document.createElement("span"));
Каретка всегда висит на 3 позиции, а в опере не работает.
Правда у меня в хром событие oninput а в опере onkeypress.