C# WebBrowserでJavaScript変数を簡易取得 前編

相変わらず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をクリックすると”波平”が表示されます。

後編へ続く・・・

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク

コメント

  1. […] してみます。できるかなぁ??? C# WebBrowserでJavaScript変数を簡易取得を参考にすればできそうですね。 […]