У меня есть контент-доступный div на веб-странице, и я пытаюсь привести курсор в поле зрения со следующим кодом. То, что я испытываю, заключается в том, что возвращаемые координаты курсора перемещаются ... обычно значение x отлично, но значение y чередуется между правильным значением и очень низким, что приводит к тому, что страница прокручивается слишком далеко, а затем назад в правильное место с чередующимися нажатиями клавиш/вызовами. Любое понимание оценено. Мой браузер:javascript прокрутка к курсору: rect.top изменения
function getCaretClientPosition()
{
var element = document.getElementById('mydivcontent');
var x = 0, y = 0;
var doc = element.ownerDocument;
var win = doc.defaultView;
var sel = win.getSelection();
if (sel.rangeCount)
{
var range = win.getSelection().getRangeAt(0);
if (range.getBoundingClientRect)
{
var rects = range.getClientRects();
if (rects.length > 0)
{ x = rects[0].left; y = rects[0].top; }
}
}
win.scrollTo(x, y);
return x.toString()+'|'+ y.toString();
}
Вызывается из С # стороны каждый раз, когда символ вводится: уаг результат = webview.EvaluateJavascript ("getCaretClientPosition();");
результат будет чередоваться, как символы введены, например: 24 | 645, 36 | 77, 48 | 645, 60 | 77 ... изредка значения х чередуются между максимумами и минимумами также
Спасибо, но я не получаю результат 0,0. На самом деле я проверяю это в своем коде и не прокручиваю его. Как я уже сказал, я получаю результат, который обычно является более низким значением y. FWIW контекст - это uiwebview в приложении xamarin iOS ... поэтому браузер - это Safari. –
Хм, хорошо. Это информация, которая должна быть включена в сам вопрос (вы можете ее отредактировать). Я не уверен, как вы «проверяете это в [вашем] коде» и не делаете этого, но это также код, который вы можете включить. – Jack