2016-01-23 85 views
2

因此,這裏是在WinForms應用程序中使用CefSharp的場景。 我們在頁面中有兩個信息頁面url和鏈接url。 我們想要加載頁面 - 輕鬆完成,並讓CefSharp顯示鏈接所在頁面的區域。這是cefsharp自動滾動到頁面上該鏈接位於DOM內的正確位置。如何製作CefSharp WinForms控件將頁面滾動到鏈接

這樣做最簡單的方法是什麼?

回答

5

不知道您使用的是哪個版本,我可以使用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時將以下鏈接滾動到視圖中。

Stack Overflow legal link

我用CefSharp Minimal Example爲出發點,建立我的POC。 我上傳了HERE進行檢查。

重建項目,包恢復已啓用,所以它應該獲得所有必需的包。之後你可以運行它。在地址欄中輸入stackoverflow.com,然後按Enter,當它加載時,視圖應向下滾動。