2015-12-30 2 views
1

У меня есть контент-доступный 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

в результате прокрутка страницы слишком далеко вверх, а затем обратно на правильное место с чередующимися нажатиями клавиш/вызовами.

Вы по умолчанию x и y к 0 в верхней части кода и установить только x и y при определенных условиях ... но вы всегда сделать win.scrollTo(x, y) может быть, вы только хотите сделать это scrollTo если вы» ve фактически нашел достойный x и y?

+0

Спасибо, но я не получаю результат 0,0. На самом деле я проверяю это в своем коде и не прокручиваю его. Как я уже сказал, я получаю результат, который обычно является более низким значением y. FWIW контекст - это uiwebview в приложении xamarin iOS ... поэтому браузер - это Safari. –

+0

Хм, хорошо. Это информация, которая должна быть включена в сам вопрос (вы можете ее отредактировать). Я не уверен, как вы «проверяете это в [вашем] коде» и не делаете этого, но это также код, который вы можете включить. – Jack

Смежные вопросы