Я делаю богатый текстовый редактор с UIWebview, в котором используется div contentEditable
. Я хочу получить позицию каретки в пикселях. Я много искал, и я получил код ниже.Как получить позицию каретки в contentEditable div при вводе новой строки?
function getCaretClientPosition() {
var x = 0, y = 0;
var sel = window.getSelection();
if (sel.rangeCount) {
var range = sel.getRangeAt(0);
if (range.getClientRects) {
var rects = range.getClientRects();
if (rects.length > 0) {
x = rects[0].left;
y = rects[0].top;
}
}
}
return { x: x, y: y };
}
Приведенный выше код хорошо работает до ввода новой строки. sel.getRangeAt(0)
возвращает null, поэтому функция не может вернуть правильные Y-пиксели.
'sel.getRangeAt (0)' удивительно. Пример может помочь. –
@Tim Downhttp: //jsfiddle.net/timdown/xMEjD/ – user1278982
@Tim Down Я нашел решение, которое вы пишете, http://jsfiddle.net/timdown/xMEjD/ этот код хорошо работает на IE, но не на сафари , когда вы устанавливаете курсор в конце строки, а затем нажмите кнопку «Ввод», курсор переходит в начало следующей строки, но позиция y курсора в пикселях «0», – user1278982