相変わらずC#で遊んでいるので、またまた備忘録でも。
WebBrowserコントロールに読み込んだHTML中のJavaScript変数を簡単に取得する方法。
もちろんグローバルスコープでないとダメだけど。
<html> <head> <script type="text/javascript"> <!-- var data = '波平'; //--> </script> </head> <body> <script type="text/javascript"> <!-- document.write(data); //--> </script></body> </html>
では、波平さんを取得します。
まず ComVisibleAttribute でフォームをCOMから見えるようにしてあげるのと、JavaScript 内で window.exterval を呼び出したときの為に ObjectForScripting にフォーム自身(this)を設定。
[System.Runtime.InteropServices.ComVisibleAttribute(true)] public partial class Form1 : Form { InitializeComponent(); webBrowser1.ObjectForScripting = this; }
button1 クリック時に window.external.Hoge を呼び出す場合。
現在開いているページに無理矢理 javascript:window.external.Hoge(data); を流し込んでやる~
private void button1_Click(object sender, EventArgs e) { string script = @" window.external.Hoge(data); "; webBrowser1.Url = new Uri(string.Format(@"javascript:{0}", script)); }
呼び出される Hoge メソッド。 アクセス修飾子はpublic で。
public void Hoge(string value) { MessageBox.Show(value); }
これでbutton1をクリックすると”波平”が表示されます。
後編へ続く・・・
コメント
[…] してみます。できるかなぁ??? C# WebBrowserでJavaScript変数を簡易取得を参考にすればできそうですね。 […]