C# webBrowser与javascript互调

实现步骤:
一、新建一个窗体,加入webBrowser控件
    控件名:webBrowser1

二、在窗体后台代码加入如下定义
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
    public partial class Form1 : Form
    {
      //...
    }
三、加载网页
    webBrowser1.Navigate(Application.StartupPath + "/UpDateReport.htm");
    webBrowser1.ObjectForScripting = this;  //这句必须,不然js不能调用C#
四、调用脚本方法

/// <summary>
        /// 脚本方法
        /// </summary>
        /// <param name="tag">JS函数名|参数1|参数2</param>
        /// <returns></returns>
        private object EXEC_JS(System.Windows.Forms.WebBrowser webBrowser, string tag)
        {
            string[] args = tag.Split('|');
            if (args.Length == 1)
            {
                return webBrowser.Document.InvokeScript(args[0], null);
            }
            else
            {
                object[] objects = new object[args.Length - 1];
                Array.Copy(args, 1, objects, 0, objects.Length);
                return webBrowser.Document.InvokeScript(args[0], objects);
            }
        }
五、C#调用脚本方法例子,可以有返回值

//JS方法
    <script language="javascript">
    function js_fun(args)
    {
         alert("我是通过js脚本弹出的。你输入的内容是:"+args);
         return "JAVASCRIPT";
     }
     </script>
    //C#代码
    object returnvalue = EXEC_JS(webBrowser1, "js_fun|参数字符串");
    MessageBox.Show("js方法返回值是:" + returnvalue.ToString());
六、JS调用C#方法的例子

//C#方法
        public string Test(string args)
        {
            return "你输入的是:"+args;
        }
    //JS代码
    <script language="javascript">
    window.onload = function()
    {
        var CS_returnvalue= window.external.Test("aaa");
        alert(CS_returnvalue);
    }
    </script>

 

你可能感兴趣的:(WebBrowser)