| Javascript是一种脚本语言,它可以寄宿在各种不同的宿主中实现强大的功能。 本文介绍的是嵌入在.Net的WebBrowser控件中显示的HTML文件中的Javascript如何调用C#代码。现在在客户端程序中嵌入网页的做法已经非常普遍了,例如腾讯的新闻弹出框之类的。
 .Net的WebBrowser用的内核应该还是IE的。IE中,window对象有个external属性,这个属性提供了一个外部接口。可以执行宿主代码。要通过这个属性来调用C#方法,其宿主对象必须是ComVisible的。例如,我们在一个Form上放置一个WebBrowser控件,另外准备一个方法OpenForm供js调用。
 代码如下:
 
 
 复制代码[System.Runtime.InteropServices.ComVisibleAttribute(true)] 
public partial class Main : KSBiz.UI.KSForm 
{ 
public Main() 
{ 
InitializeComponent(); 
} 
//其余略 
public void OpenForm(string s) 
{ 
BasicInfo.CustomerList f = new StockManage.BasicInfo.CustomerList(); 
f.Show(); 
f.MdiParent = this; 
webBrowser1.Visible = false; 
} 
}
再准备一个html文件:
 代码如下:
 
 
 复制代码
<body> 
<h1>欢迎使用</h1> 
<a href=\'#\' onclick=\'window.external.OpenForm("test");\' >客户列表</a> 
</body> 
在HTML文件中,就可以通过如上的方法来调用C#的方法。 
在FormLoad事件中,为WebBrowser控件设置url,以及设置脚本执行的宿主: 
复制代码 代码如下:
private void Main_Load(object sender, EventArgs e) 
{ 
System.IO.FileInfo file = new System.IO.FileInfo("top.htm"); 
// WebBrowser控件显示的网页路径 
webBrowser1.Url = new Uri(file.FullName); 
// 将当前类设置为可由脚本访问 
webBrowser1.ObjectForScripting = this; 
}
这样就好了。
 
 
 
 |