因此,这里是在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,当它加载时,视图应向下滚动。