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>

posted on 2011-03-24 10:12  N_unknown  阅读(5132)  评论(3编辑  收藏  举报

导航