2012-12-17 3 views
8

TChromium 델파이에서 스크롤바 위치를 가져오고 설정하는 방법?TChromium 스크롤바 위치를 가져오고 설정하는 방법은 무엇입니까?

+9

투표가 재개되었습니다. 이것은 내 생각에 유효하고 유용한 질문입니다! CEF에서 스크롤바 위치를 얻거나 설정하는 것은 불가능하기 때문에 조사 할 항목이 많지 않습니다 (너무 많이 표시하지는 않음). – TLama

+0

답변 해 주셔서 감사 드리며, 다른 해결책을 시도하겠습니다. –

답변

1

현재 CefSharp으로 재생 중입니다. 이는 델파이와 비슷하다고 생각합니다. 여기 내 솔루션입니다 :

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)); 
} 

내가하지 델파이 전문가가 더 이상, 당신이 내 코드를 이해할 수있는 희망 해요; 기본적으로 I use JavaScript to read/write the scroll positions을 입력하고 EvaluateScriptExecuteScript 방법을 통해이 작은 JavaScript 코드 단편을 실행하십시오.

3

자바 스크립트 개체로 직접 작업하는 것이 가능합니다. 프레임의 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; 
0

당신은 TCromium.Browser에서 자바 스크립트를 사용할 필요가 : 여기

는 샘플입니다.

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

행운을 빕니다 : 그것은 가장 쉬운 방법!

관련 문제