[ComVisible(true)]
public class JSCall
{
public JSCall()
{
}
//此方法可在JS中调用 ()
public void Test(string message)
{
MessageBox.Show(message)
}
}
然后把WebBrowser的ObjectForScripting属性设置成实例化成上面的类;
就是 webBrowser.ObjectForScripting = new JSCall()
最后在JS调用:window.external.Test(“JSTest”)
通过webBrowser实现C#和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脚本d出的。你输入的内容是:"+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>
1、js文件中的语言属于javascript,而javascript是运行在网页上,也就是在浏览器端运行的;2、程序分为cs架构和bs架构。
cs:Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或 SQL Server。客户端需要安装专用的客户端软件。
bs:Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。浏览器通过Web Server 同数据库进行数据交互。
winform程序属于cs架构,无法调用js文件!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)