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

JavaScriptのプログラムを実行する

Webページに対してJavaScript関数の実行や任意のJavaScriptコードの実行を行う方法です。

InternetExplorer操作時

Navigateメソッドに、URLではなくJavaScriptのコードを直接渡せば実行されます。
文字列の頭に"javascript:"をつけてください。

またはDocument.Script.setTimeoutメソッドにJavaScriptコードを渡しても実行できます。

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

						Private Sub btnIEjsexe_Click(sender As Object, e As EventArgs) Handles btnIEjsexe.Click
					
							'JavaScriptのコードを実行
							Dim js As New System.Text.StringBuilder()
							js.AppendLine("function alertdisp(message) {")
							js.AppendLine("   alert(message);")
							js.AppendLine("}")
							js.AppendLine("alertdisp('test');")
							objIE.Navigate("javascript:" + Uri.EscapeDataString(js.ToString()) + ";")
					
						End Sub
					
						Private Sub btnIEjsexe2_Click(sender As Object, e As EventArgs) Handles btnIEjsexe2.Click
					
							'HTML中のJavaScript関数を実行する
							objIE.Navigate("javascript:jsFunc();")
					
						End Sub

						Private Sub btnIEjsexe3_Click(sender As Object, e As EventArgs) Handles btnIEjsexe3.Click

							'HTML中のJavaScript関数を実行する
							objIE.Document.Script.setTimeout("javascript:alert('test')")
					
						End Sub
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage_jsevent.html)を使っています

						private void btnIEjsexe_Click(object sender, EventArgs e)
						{
							//JavaScriptのコードを実行
							System.Text.StringBuilder js = new System.Text.StringBuilder();
							js.AppendLine("function alertdisp(message) {");
							js.AppendLine("   alert(message);");
							js.AppendLine("}");
							js.AppendLine("alertdisp('test');");
							objIE.Navigate("javascript:" + Uri.EscapeDataString(js.ToString()) + ";");
						}
				
						private void btnIEjsexe2_Click(object sender, EventArgs e)
						{
							//HTML中のJavaScript関数を実行する
							objIE.Navigate("javascript:jsFunc();");
						}

						private void btnIEjsexe3_Click(object sender, EventArgs e)
						{
							//HTML中のJavaScript関数を実行する
							objIE.Document.Script.setTimeout("javascript:alert('test')");
						}
					

						
					

WebBrowserコントロール使用時

Navigateメソッドに、URLではなくJavaScriptのコードを直接渡せば実行されます。
文字列の頭に"javascript:"をつけてください。

別の方法として、Document.InvokeScriptメソッドを使います。
このメソッドはJavaScript関数を実行します。

また、InvokeScriptメソッドのJavaScript関数に"eval"を指定することで、任意のJavaScriptコードを実行することができます。

						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage_jsevent.html)を使っています
						Private Sub btnWBjsexe_Click(sender As Object, e As EventArgs) Handles btnWBjsexe.Click
					
							'JavaScriptのコードを実行
							Dim js As New System.Text.StringBuilder()
							js.AppendLine("function alertdisp(message) {")
							js.AppendLine("   alert(message);")
							js.AppendLine("}")
							js.AppendLine("alertdisp('test');")
							webBrowser1.Navigate("javascript:" + Uri.EscapeDataString(js.ToString()) + ";")
					
							'JavaScriptのコードを実行 その2
							webBrowser1.Document.InvokeScript("eval", New String() {js.ToString()})
					
						End Sub
					
						Private Sub btnWBjsexe2_Click(sender As Object, e As EventArgs) Handles btnWBjsexe2.Click
					
							'HTML中のJavaScript関数を実行する
							webBrowser1.Navigate("javascript:jsFunc();")
							Application.DoEvents()   'これがないと仕組み的に後ろで実行されてしまう
					
							'HTML中のJavaScript関数を実行する その2
							webBrowser1.Document.InvokeScript("jsFunc")
					
							'HTML中のJavaScript関数を実行する その2 関数に引数を指定する
							webBrowser1.Document.InvokeScript("jsFunc2", New String() {"a", "b"})
					
						End Sub
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage_jsevent.html)を使っています
						private void btnWBjsexe_Click(object sender, EventArgs e)
						{
							//JavaScriptのコードを実行
							System.Text.StringBuilder js = new System.Text.StringBuilder();
							js.AppendLine("function alertdisp(message) {");
							js.AppendLine("   alert(message);");
							js.AppendLine("}");
							js.AppendLine("alertdisp('test');");
							webBrowser1.Navigate("javascript:" + Uri.EscapeDataString(js.ToString()) + ";");
				
							//JavaScriptのコードを実行 その2
							webBrowser1.Document.InvokeScript("eval", new string[] { js.ToString() });
						}
				
						private void btnWBjsexe2_Click(object sender, EventArgs e)
						{
							//HTML中のJavaScript関数を実行する
							webBrowser1.Navigate("javascript:jsFunc();");
							Application.DoEvents(); //これがないと仕組み的に後ろで実行されてしまう
				
							//HTML中のJavaScript関数を実行する その2
							webBrowser1.Document.InvokeScript("jsFunc");
				
							//HTML中のJavaScript関数を実行する その2 関数に引数を指定する
							webBrowser1.Document.InvokeScript("jsFunc2", new string[] { "a", "b" });
						}
					

						
					

参考

HtmlDocument.InvokeScript Method

WebBrowserコントロール使用時

WebView2コントロールでのJavaScript実行はこちらにまとめています。