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