因此,這裏是在WinForms應用程序中使用CefSharp的場景。 我們在頁面中有兩個信息頁面url和鏈接url。 我們想要加載頁面 - 輕鬆完成,並讓CefSharp顯示鏈接所在頁面的區域。這是cefsharp自動滾動到頁面上該鏈接位於DOM內的正確位置。如何製作CefSharp WinForms控件將頁面滾動到鏈接
這樣做最簡單的方法是什麼?
因此,這裏是在WinForms應用程序中使用CefSharp的場景。 我們在頁面中有兩個信息頁面url和鏈接url。 我們想要加載頁面 - 輕鬆完成,並讓CefSharp顯示鏈接所在頁面的區域。這是cefsharp自動滾動到頁面上該鏈接位於DOM內的正確位置。如何製作CefSharp WinForms控件將頁面滾動到鏈接
這樣做最簡單的方法是什麼?
不知道您使用的是哪個版本,我可以使用CefSharp的latest stable version(47.0.0)來解決此問題。
首先添加處理程序到FrameLoadEnd
事件:
browser.FrameLoadEnd += OnBrowserFrameLoadEnd;
的處理程序如下:
private void OnBrowserFrameLoadEnd(object sender, FrameLoadEndEventArgs frameLoadEndEventArgs)
{
if (frameLoadEndEventArgs.Frame.IsMain && frameLoadEndEventArgs.Url == pageUrl)
{
frameLoadEndEventArgs.Browser.MainFrame.ExecuteJavaScriptAsync(
"(function() { var el = document.querySelector('a[href=\"" + linkUrl +
"\"]'); if(el) { el.scrollIntoView(); } })();");
}
}
這兩個常量:
private const string pageUrl = "http://stackoverflow.com/";
private const string linkUrl = "http://stackexchange.com/legal";
每當我們瀏覽到在pageUrl
的網站中,我們在l中調用JavaScript函數提交文件。它使用querySelector
選擇具有href
屬性等於linkUrl
的第一個元素。如果有這樣的元素,那麼我們調用其上的方法scrollIntoView()
。
此特定示例在訪問stackoverflow.com時將以下鏈接滾動到視圖中。
我用CefSharp Minimal Example爲出發點,建立我的POC。 我上傳了HERE進行檢查。
重建項目,包恢復已啓用,所以它應該獲得所有必需的包。之後你可以運行它。在地址欄中輸入stackoverflow.com,然後按Enter,當它加載時,視圖應向下滾動。