2017-05-02 81 views
1

私はC#WPFアプリケーションでCefSharp 57を使用しています。
任意のWebページで縦スクロールバーと横スクロールバーの両方を非表示にしたいとします。ウェブページの読み込み時にCefSharpで縦スクロールバーと横スクロールバーの両方を非表示にするにはどうすればよいですか?

CefSharpでこれを直接行う方法が見つかりませんでした。
ネイティブのWinFormsブラウザでよく慣れていたScrollBarsEnabledのようなプロパティはないようです。

ボディオーバーフローを非表示に設定するためにページがレンダリングされた後にいくつかのCSS/JSを注入できると思っていましたが、これは効果がありません。

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を使用して任意のページで縦と横のスクロールバーを非表示にする方法はありますか?

+0

簡単にスクロールバーを非表示にするには、このパラメータを追加することができます。 devtoolsを開いてスクリプトを手動で実行し、有効であることを確認してください – amaitland

答えて

3

私はもともとあったコードが、私はちょうど私が提供されるスクリプトを簡単にするために必要な、正しいです:

WebBrowser.FrameLoadEnd += OnBrowserFrameLoadEnd; 

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

スクロールバーが私の目的に合った消える前に、ちょうど第二に閲覧できます。

0

あなたが最も簡単なオプションをするJavaScript/CSSを使用している

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

この回答はwinforms版です。 CefSharp.Wpf.ChromiumWebBrowserにはDockプロパティがありません。 – Travis

関連する問題