WebView2 応用テクニック

jQueryを使ってDOM操作を行う

WebView2コントロールでのDOM操作はJavaScriptを使いますので、jQueryを使えばもっと楽に様々な操作が行えます。
操作するWebページにjQueryが読み込まれている必要がありますが、読み込まれていなければ動的に読み込ませることができます。

サンプル

DOM操作をJavaScriptで記述した場合と、jQueryで記述した場合の比較が以下になります。

						Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

							'JavaScriptの外部ファイルを動的に読み込み
							Dim js As New System.Text.StringBuilder()
							js.AppendLine("var sc = document.createElement('script');")
							js.AppendLine("sc.src = 'https://code.jquery.com/jquery-3.4.1.min.js';")
							js.AppendLine("document.body.appendChild(sc);")
							Await webView2.ExecuteScriptAsync(js.ToString())
					
						End Sub
					
						Private Async Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
					
							'idを指定してアクセス
							'Await webView2.ExecuteScriptAsync("document.getElementById('inputid1').value = 'テキスト1';")
							Await webView2.ExecuteScriptAsync("$('#inputid1').val('テキスト1');")
					
							'name属性を指定してアクセス
							'Await webView2.ExecuteScriptAsync("document.getElementsByName('inputname')(1).value = 'テキスト2';")
							Await webView2.ExecuteScriptAsync("$('[name=inputname]').eq(1).val('テキスト2');")
					
							'class属性を指定してアクセス
							'Await webView2.ExecuteScriptAsync("document.getElementsByClassName('inputclass')(2).value = 'テキスト3';")
							Await webView2.ExecuteScriptAsync("$('.inputclass').eq(2).val('テキスト3');")
					
							'タグを指定してアクセス
							'Await webView2.ExecuteScriptAsync("document.getElementsByTagName('input')(3).value = 'password';")
							Await webView2.ExecuteScriptAsync("$('input').eq(3).val('password');")
					
						End Sub
					
						private async void button1_Click(object sender, EventArgs e)
						{
							//JavaScriptの外部ファイルを動的に読み込み
							var js = new StringBuilder();
							js.AppendLine("var sc = document.createElement('script');");
							js.AppendLine("sc.src = 'https://code.jquery.com/jquery-3.4.1.min.js';");
							js.AppendLine("document.body.appendChild(sc);");
							await webView2.ExecuteScriptAsync(js.ToString());
						}
				
						private async void button2_Click(object sender, EventArgs e)
						{
							//idを指定してアクセス
							//await webView2.ExecuteScriptAsync("document.getElementById('inputid1').value = 'テキスト1';");
							await webView2.ExecuteScriptAsync("$('#inputid1').val('テキスト1');");
				
							//name属性を指定してアクセス
							//await webView2.ExecuteScriptAsync("document.getElementsByName('inputname')[1].value = 'テキスト2';");
							await webView2.ExecuteScriptAsync("$('[name=inputname]').eq(1).val('テキスト2');");
				
							//class属性を指定してアクセス
							//await webView2.ExecuteScriptAsync("document.getElementsByClassName('inputclass')[2].value = 'テキスト3';");
							await webView2.ExecuteScriptAsync("$('.inputclass').eq(2).val('テキスト3');");
				
							//タグを指定してアクセス
							//await webView2.ExecuteScriptAsync("document.getElementsByTagName('input')[3].value = 'password';");
							await webView2.ExecuteScriptAsync("$('input').eq(3).val('password');");
						}
					

参考