WebView2コントロールによるブラウザ/HTMLイベント処理

プログラムでHTML要素のイベントを発生させてJavaScriptを実行する

HTML要素に定義されたイベントをプログラムにより発生させて、イベントに定義されているJavaScriptを実行します。

例えば、

<input type="button" onclick="alert('ボタン1を押下')" />

のようなHTMLであれば、プログラムでonclickイベントを発生させます。

また、SelectタグにおいてはプログラムでOptionを選択してもonchangeイベントが発生しませんので、 明示的にイベントを発行させる必要があります。
例えば下記のようなHTMLの場合、

<select id="selectbox" onChange="hoge();">
    <option value="opt1">opt1</option>
    <option value="opt2">opt2</option>
</select>

マウス操作で選択内容を変更すればonChangeイベントが発生してhogeメソッドが実行されますが、 プログラムで選択内容を変更しても発生しません。
以下のようにして明示的にイベントを実行させます。

WebView2コントロール使用時

WebView2コントロールではJavaScriptを使ってイベントを発生させます。

document.createEventメソッドでイベントオブジェクトを作成し、
event.initEventメソッドでイベントの初期化・設定を行い、
dispatchEventメソッドでイベントを発生させます。

						'下記コードの動作確認はテストページ(https//web.biz-prog.net/test/testpage_jsevent.html)を使っています
						'メソッドには「Async」をつけてください

						'ボタンのクリックイベントを発生させる
						Dim js As New System.Text.StringBuilder()
						js.AppendLine("var evt = document.createEvent('HTMLEvents');")
						js.AppendLine("evt.initEvent('click', false, true);")
						js.AppendLine("document.getElementById('buttonid1').dispatchEvent(evt);")
						Await webView2.ExecuteScriptAsync(js.ToString())
				
						'セレクトボックスにoncahngeイベントを発生させる
						js.Clear()
						js.AppendLine("var evt = document.createEvent('HTMLEvents');")
						js.AppendLine("evt.initEvent('change', false, true);")
						js.AppendLine("document.getElementsByName('selectname')[0].dispatchEvent(evt);")
						Await webView2.ExecuteScriptAsync(js.ToString())
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage_jsevent.html)を使っています
						//メソッドには「async」をつけてください。

						//ボタンのクリックイベントを発生させる
						System.Text.StringBuilder js = new System.Text.StringBuilder();
						js.AppendLine("var evt = document.createEvent('HTMLEvents');");
						js.AppendLine("evt.initEvent('click', false, true);");
						js.AppendLine("document.getElementById('buttonid1').dispatchEvent(evt);");
						await webView2.ExecuteScriptAsync(js.ToString());
			
						//セレクトボックスにoncahngeイベントを発生させる
						js.Clear();
						js.AppendLine("var evt = document.createEvent('HTMLEvents');");
						js.AppendLine("evt.initEvent('change', false, true);");
						js.AppendLine("document.getElementsByName('selectname')[0].dispatchEvent(evt);");
						await webView2.ExecuteScriptAsync(js.ToString());
					

参考