Discuz教程网

Javascript调用C#代码

[复制链接]
authicon 09927306 发表于 2011-1-18 12:39:35 | 显示全部楼层 |阅读模式
Javascript是一种脚本语言,它可以寄宿在各种不同的宿主中实现强大的功能。
本文介绍的是嵌入在.Net的WebBrowser控件中显示的HTML文件中的Javascript如何调用C#代码。现在在客户端程序中嵌入网页的做法已经非常普遍了,例如腾讯的新闻弹出框之类的。
.Net的WebBrowser用的内核应该还是IE的。IE中,window对象有个external属性,这个属性提供了一个外部接口。可以执行宿主代码。要通过这个属性来调用C#方法,其宿主对象必须是ComVisible的。例如,我们在一个Form上放置一个WebBrowser控件,另外准备一个方法OpenForm供js调用。
代码如下:

  1. [System.Runtime.InteropServices.ComVisibleAttribute(true)]
  2. public partial class Main : KSBiz.UI.KSForm
  3. {
  4. public Main()
  5. {
  6. InitializeComponent();
  7. }
  8. //其余略
  9. public void OpenForm(string s)
  10. {
  11. BasicInfo.CustomerList f = new StockManage.BasicInfo.CustomerList();
  12. f.Show();
  13. f.MdiParent = this;
  14. webBrowser1.Visible = false;
  15. }
  16. }
复制代码

再准备一个html文件:
代码如下:


  1. <body>
  2. <h1>欢迎使用</h1>
  3. <a href=\'#\' onclick=\'window.external.OpenForm("test");\' >客户列表</a>
  4. </body>
  5. 在HTML文件中,就可以通过如上的方法来调用C#的方法。
  6. 在FormLoad事件中,为WebBrowser控件设置url,以及设置脚本执行的宿主:
  7. 复制代码 代码如下:
  8. private void Main_Load(object sender, EventArgs e)
  9. {
  10. System.IO.FileInfo file = new System.IO.FileInfo("top.htm");
  11. // WebBrowser控件显示的网页路径
  12. webBrowser1.Url = new Uri(file.FullName);
  13. // 将当前类设置为可由脚本访问
  14. webBrowser1.ObjectForScripting = this;
  15. }
复制代码

这样就好了。





上一篇:PHP校验ISBN码的函数代码
下一篇:js的写法基础分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-3 18:18

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表