応用

JavaScriptの変数値を取得する

WebBrowserで表示しているページの、JavaScriptのグローバル変数の値をプログラムから取得します。

<html>
<head>
<script type="text/javascript">
<!--
var data = 'testvalue';
var dataArray = Array('value1', 'value2', 'value3');
//-->
</script>
</head>
<body>
test
</body>
</html>
						<System.Runtime.InteropServices.ComVisibleAttribute(True)> _
						Public Class Form2

							Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
								WebBrowser1.ObjectForScripting = Me
								WebBrowser1.Navigate("c:\test.html")
							End Sub

							Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
								WebBrowser1.Url = New Uri("javascript:window.external.ShowData(data)")
								Application.DoEvents()
								WebBrowser1.Url = New Uri("javascript:window.external.ShowData(dataArray)")
							End Sub

							Public Sub ShowData(ByVal data As String)
								MsgBox(data)
							End Sub

						End Class
					
  • <System.Runtime.InteropServices.ComVisibleAttribute(True)>にて、COMから参照可能になります。
  • ObjectForScriptingに自身を設定することで、スクリプトからアクセスできるようになります。
  • webBrowser1.Urlで直接JavaScriptコードを設定することで、スクリプトを実行できます。
  • 上記例ではUrlの設定を連続で行なっているため、DoEventsを入れないと最後の設定しか反映されません。1つしかUrl設定しないなら、DoEventsは不要です。

参考

C# WebBrowserでJavaScript変数を簡易取得
Javascriptから.NETへ値を渡す方法