ブラウザの特殊な操作 各ブラウザ共通

プログラムで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メソッドが実行されますが、 プログラムで選択内容を変更しても発生しません。
以下のようにして明示的にイベントを実行させます。

InternetExplorer操作時

InternetExplorer操作でイベントを発生させる方法は2つあります。
1つ目は、各要素のfireEventメソッドを実行する方法です。
引数としてイベント名称を文字列で指定して呼び出せば、そのイベントが発生します。

2つ目は、各要素のdispatchEventメソッドを実行する方法です。 createEventメソッドとinitEventメソッドによりイベントを定義してから、 dispatchEventメソッドでイベントが発生します。
fireEventメソッドの場合は、その要素の直接イベントが定義されないと呼び出せませんが、 dispatchEventメソッドを使う方法なら、外部のJavaScriptにイベントが定義されている場合でも 発生させることができます。

						'下記コードの動作確認はテストページ(https//web.biz-prog.net/test/testpage_jsevent.html)を使っています

						'ボタンのクリックイベントを発生させる
						objIE.Document.getElementById("buttonid1").fireEvent("onclick")
				
						'ボタンのクリックイベントを発生させるその2
						Dim evt = objIE.Document.createEvent("HTMLEvents")
						evt.initEvent("click", False, True)
						objIE.Document.getElementById("buttonid1").dispatchEvent(evt)   'イベントを発生させる
				
						'セレクトボックスにoncahngeイベントを発生させる
						objIE.Document.getElementsByName("selectname")(0).fireEvent("onchange")
				
						'セレクトボックスにoncahngeイベントを発生させる2
						Dim evt2 = objIE.Document.createEvent("HTMLEvents")
						evt2.initEvent("change", False, True)
						objIE.Document.getElementsByName("selectname")(0).dispatchEvent(evt2)   'イベントを発生させる
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage_jsevent.html)を使っています

						//ボタンのクリックイベントを発生させる
						objIE.Document.getElementById("buttonid1").fireEvent("onclick");
			
						//ボタンのクリックイベントを発生させるその2
						var evt = objIE.Document.createEvent("HTMLEvents");
						evt.initEvent("click", false, true);
						objIE.Document.getElementById("buttonid1").dispatchEvent(evt);   //イベントを発生させる
			
						//セレクトボックスにoncahngeイベントを発生させる
						objIE.Document.getElementsByName("selectname")(0).fireEvent("onchange");
			
						//セレクトボックスにoncahngeイベントを発生させる2
						var evt2 = objIE.Document.createEvent("HTMLEvents");
						evt2.initEvent("change", false, true);
						objIE.Document.getElementsByName("selectname")(0).dispatchEvent(evt2);   //イベントを発生させる
					
						objIE.Document.GetElementsById("selectbox").fireEvent ("onchange")
					

参考

WebBrowserコントロール使用時

WebBrowserコントロールでイベントを発生させるにはRaiseEventメソッドを使います。
引数としてイベント名称を文字列で指定して呼び出せば、そのイベントが発生します。

						'下記コードの動作確認はテストページ(https//web.biz-prog.net/test/testpage_jsevent.html)を使っています

						'ボタンのクリックイベントを発生させる
						webBrowser1.Document.GetElementById("buttonid1").RaiseEvent("onclick")
				
						'セレクトボックスにoncahngeイベントを発生させる
						webBrowser1.Document.All.GetElementsByName("selectname")(0).RaiseEvent("onchange")
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage_jsevent.html)を使っています

						//ボタンのクリックイベントを発生させる
						webBrowser1.Document.GetElementById("buttonid1").RaiseEvent("onclick");
			
						//セレクトボックスにoncahngeイベントを発生させる
						webBrowser1.Document.All.GetElementsByName("selectname")[0].RaiseEvent("onchange");
					
						WebBrowser1.Document.GetElementsById("selectbox").fireEvent ("onchange")
					

参考

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());
					

						
					

参考