1
我在網頁中有一個contenteditable div,我試圖用下面的代碼將光標移動到視圖中。我所經歷的是,返回的光標座標似乎在跳躍......通常x值很好,但是y值在正確值和非常低值之間交替,導致頁面滾動得過高然後返回通過交替的按鍵/通話到正確的地方。 任何洞察力表示讚賞。我的JavaScript是: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();
}
從C#側每次輸入一個字符時調用: VAR結果= webview.EvaluateJavascript( 「getCaretClientPosition();」);
結果將作爲交替字符被輸入例如:24 | 645,36 | 77 48 | 645,60 | 77 ...偶爾高點和低點也
謝謝,但我沒有得到0,0結果。事實上,我正在檢查後面的代碼,而不是滾動到它。正如我所說我得到的結果通常是一個較低的y值。 FWIW上下文是xamarin iOS應用中的uiwebview ...所以瀏覽器是Safari。 –
嗯,好的。這是應該包含在問題本身中的信息(您可能需要編輯它)。我不確定你是如何「在[你的]代碼中檢查它的」,而不是這樣做,但這也是你可能想要包含的代碼。 – Jack