C# スニペット 作成日: 2021/05/26 (更新日: 2021/05/27) WebView2 のスニペット集 目次 注意 スニペット ローカルファイル の指定 データ送信 (JavaScript → C#) データ送信 (C# → JavaScript) C# から JavaScript コードを実行する C# のオブジェクトを JavaScript で使用できるようにする 参考 このページは、WebView2 のスニペットなどをまとめる予定のページです。 目次 注意 コードのライセンスは CC0 (クレジット表示不要、改変可、商用可) です。 コードは C# 用のコードになっています。 コード上の webView は、Microsoft.Web.WebView2.WinForms.WebView2 などのインスタンスです。Microsoft Edge WebView2 control - Microsoft Edge Development | Microsoft Docs に従って、導入してください。 スニペット ローカルファイル の指定 例: 実行フォルダ上にある test.html を指定 var currentDirectory = Environment.CurrentDirectory; webView.Source = new Uri($"{currentDirectory}/test.html"); データ送信 (JavaScript → C#) JavaScript 側 (送信) window.chrome.webview.postMessage("JavaScriptからのデータ送信"); C# 側 (受信) private void Test() { webView.WebMessageReceived += webView_WebMessageReceived; } private void webView_WebMessageReceived(object sender, Microsoft.Web.WebView2.Core.CoreWebView2WebMessageReceivedEventArgs e) { var s = e.TryGetWebMessageAsString(); MessageBox.Show(s); } データ送信 (C# → JavaScript) C# 側 (送信) private void Test() { webView.NavigationCompleted += webView_NavigationCompleted; } private void webView_NavigationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2NavigationCompletedEventArgs e) { webView.CoreWebView2.PostWebMessageAsString("C#からのデータ送信"); } JavaScript 側 (受信) window.chrome.webview.addEventListener('message', function(e){ alert(e.data); }); C# から JavaScript コードを実行する C# await webView.ExecuteScriptAsync("alert(1)"); C# のオブジェクトを JavaScript で使用できるようにする C# /// <summary> /// テスト用のクラスです。 /// </summary> [ClassInterface(ClassInterfaceType.AutoDual)] [ComVisible(true)] public class Test { /// <summary> /// テスト用のメソッドです。 /// </summary> public void TestMethod(string s) { MessageBox.Show("値: " + s); } } var test = new Test(); webView.CoreWebView2.AddHostObjectToScript("test", test); JavaScript <button id="button1">test</button> <script> document.getElementById("button1").addEventListener('click', function(){ chrome.webview.hostObjects.test.TestMethod('javascript') }); </script> 参考 Microsoft Edge WebView2 control - Microsoft Edge Development | Microsoft Docs