WebBrower(.NET) 応用テクニック
JavaScriptのプログラムを実行する
Webページに対してJavaScript関数の実行や任意のJavaScriptコードの実行を行う方法です。
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" }); }