9

如何TChromium在 Delphi 中获取和设置滚动条位置?

4

3 回答 3

4

可以直接使用 javascript 对象。只需使用框架的 CefV8Context 即可。

这是一个例子:

var
    val: ICefV8Value;
    context: ICefv8Context;
    excp: ICefV8Exception;
    scroll: TPoint;
begin
    if (Chromium1.Browser.MainFrame = nil) then
      exit;

    //this will work only with exact frame
    context := Chromium1.Browser.MainFrame.GetV8Context;

    if (context <> nil) then
    begin
        context.Eval('window.pageXOffset', val, excp);
        scroll.x := val.GetIntValue;
        context.Eval('window.pageYOffset', val, excp);
        scroll.y := val.GetIntValue;
    end
    else
      exit;

    //todo: do something with scroll here
end;
于 2013-11-18T16:18:26.977 回答
1

目前正在玩CefSharp,我认为这与 Delphi 相似。这是我的解决方案:

public int GetVerticalScrollPosition()
{
    var r = _webView.EvaluateScript(@"document.body.scrollTop");
    return Convert.ToInt32(r);
}

public void SetVerticalScrollPosition(int pos)
{
    _webView.ExecuteScript(
        string.Format(@"document.body.scrollTop = {0}", pos));
}

我不再是那个 Delphi 专家了,希望你能看懂我的代码;基本上我使用 JavaScript 来读取/写入滚动位置EvaluateScript并通过and方法执行这些小的 JavaScript 片段ExecuteScript

于 2013-05-29T19:03:55.353 回答
0

您需要在 TCromium.Browser 中使用 JavaScript。这是最简单的方法:

Chromium1.Browser.MainFrame.ExecuteJavaScript('window.scrollBy(0,50)', 'about:blank', 0);

祝你好运!

于 2017-04-11T15:54:06.393 回答