如何在加载网页时让CefSharp隐藏垂直和水平滚动条?

时间:2017-05-02 16:10:17

标签: c# wpf cefsharp

我在C#WPF应用程序中使用CefSharp 57 我想在任何给定的网页上隐藏垂直和水平滚动条。

我一直无法找到直接使用CefSharp执行此操作的方法 它似乎没有类似ScrollBarsEnabled的属性,我曾经习惯使用原生的WinForms浏览器。

我想我可能会在页面渲染后注入一些CSS / JS来将body溢出设置为隐藏但这没有效果。

private void OnBrowserFrameLoadEnd(object sender, FrameLoadEndEventArgs args)
{
    if (args.Frame.IsMain)
    {
        // Shows an alert after page is loaded so it definitely works
        args
            .Browser
            .MainFrame
            .ExecuteJavaScriptAsync("alert('HELLO!');

        // Scrollbars are still visible after this fires
        args
            .Browser
            .MainFrame
            .ExecuteJavaScriptAsync(
            "(function() { document.body.style.overflow = 'hidden'; });");
    }
}

我看看是否有办法自己绘制滚动条并使它们透明,但我无法找到方法来执行此操作。

有没有办法使用CefSharp隐藏任何给定页面上的垂直和水平滚动条?

2 个答案:

答案 0 :(得分:8)

我最初展示的代码是正确的,我只需要简化我提供的脚本:

WebBrowser.FrameLoadEnd += OnBrowserFrameLoadEnd;

private void OnBrowserFrameLoadEnd(object sender, FrameLoadEndEventArgs args)
{
    if (args.Frame.IsMain)
    {
        args
            .Browser
            .MainFrame
            .ExecuteJavaScriptAsync(
            "document.body.style.overflow = 'hidden'");
    }
}

滚动条在消失之前只显示一秒钟,符合我的目的。

答案 1 :(得分:1)

您可以添加此参数以轻松隐藏滚动条

  Brow = new CefSharp.WinForms.ChromiumWebBrowser("https://www.google.com") {
                Dock = DockStyle.Top,   // Hide scrollbars
            };