- 实现步骤:
- 一、新建一个窗体,加入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>
|