WebView2 のスニペット集
このページは、WebView2 のスニペットなどをまとめる予定のページです。
目次
注意
- コードのライセンスは CC0 (クレジット表示不要、改変可、商用可) です。
- コードは C# 用のコードになっています。
- コード上の
webView
は、Microsoft.Web.WebView2.WinForms.WebView2
などのインスタンスです。Microsoft Edge WebView2 control - Microsoft Edge Development | Microsoft Docs に従って、導入してください。
スニペット
ローカルファイル の指定
var currentDirectory = Environment.CurrentDirectory;
webView.Source = new Uri($"{currentDirectory}/test.html");
データ送信 (JavaScript → C#)
window.chrome.webview.postMessage("JavaScriptからのデータ送信");
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)
private void Test()
{
webView.NavigationCompleted += webView_NavigationCompleted;
}
private void webView_NavigationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2NavigationCompletedEventArgs e)
{
webView.CoreWebView2.PostWebMessageAsString("C#からのデータ送信");
}
window.chrome.webview.addEventListener('message', function(e){
alert(e.data);
});
C# から JavaScript コードを実行する
await webView.ExecuteScriptAsync("alert(1)");
C# のオブジェクトを JavaScript で使用できるようにする
/// <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);
<button id="button1">test</button>
<script>
document.getElementById("button1").addEventListener('click', function(){
chrome.webview.hostObjects.test.TestMethod('javascript')
});
</script>