我在网页中有一个可内容编辑的 div,我正在尝试使用以下代码将光标置于 View 中。我的经历是,返回的光标坐标似乎在跳跃...通常 x 值很好,但 y 值在正确值和非常低的值之间交替,导致页面向上滚动太远然后向后滚动通过交替按键/调用到达正确的位置。 任何见解都值得赞赏。我的 JavaScript 是:
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 result = webview.EvaluateJavascript("getCaretClientPosition();");
结果会随着输入的字符而变化,例如:24|645、36|77、48|645、60|77...有时 x 值也会在高点和低点之间交替
最佳答案
resulting in the page scrolling too far up and then back to the correct place with alternating key presses/ calls.
您将代码顶部的 x
和 y
默认为 0
,并且仅设置 x
和 y
在某些条件下......但你总是执行win.scrollTo(x, y)
也许你只想这样做如果您确实找到了有值(value)的
?x
和 y
,请滚动To
关于javascript滚动到光标: rect.顶部更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34538576/