Cách nhận và đặt TChromium
vị trí thanh cuộn ở Delphi?Cách nhận và đặt vị trí thanh cuộn TChromium?
8
A
Trả lời
1
Hiện đang chơi với CefSharp, tôi nghĩ rằng điều này tương tự như trong Delphi. Đây là giải pháp của tôi:
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));
}
Tôi không phải là chuyên gia Delphi nữa, hy vọng bạn có thể hiểu mã của tôi; về cơ bản I use JavaScript to read/write the scroll positions và thực thi các đoạn mã JavaScript nhỏ này thông qua các phương thức EvaluateScript
và ExecuteScript
.
3
Có thể làm việc trực tiếp với các đối tượng javascript. Chỉ cần sử dụng CefV8Context của khung.
Đây là một mẫu:
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
Bạn cần phải sử dụng JavaScript trong TCromium.Browser. Đó là cách dễ nhất:
Chromium1.Browser.MainFrame.ExecuteJavaScript('window.scrollBy(0,50)', 'about:blank', 0);
Chúc may mắn!
Đã bỏ phiếu để mở lại. Đây là quan điểm của tôi về một câu hỏi hữu ích và hữu ích! Không có nhiều để nghiên cứu (do đó không có nhiều để hiển thị là tốt), vì nó có thể không thể có được hoặc thiết lập các vị trí thanh cuộn trong CEF. – TLama
Cảm ơn bạn đã trả lời, tôi sẽ thử một giải pháp khác. –