Javascript调用C#代码


Posted in Javascript onJanuary 17, 2011

本文介绍的是嵌入在.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; 
}

这样就好了。
Javascript 相关文章推荐
Display SQL Server Login Mode
Jun 21 Javascript
javascript下过滤数组重复值的代码
Sep 10 Javascript
javascript 无提示关闭窗口脚本
Aug 17 Javascript
jquery延迟加载外部js实现代码
Jan 11 Javascript
jquery插件格式实例分析
Jun 16 Javascript
3种不同的ContextMenu右键菜单实现代码
Nov 03 Javascript
利用express启动一个server服务的方法
Sep 17 Javascript
微信小程序 按钮滑动的实现方法
Sep 27 Javascript
JavaScript使用Math.random()生成简单的验证码
Jan 21 Javascript
vue-router路由模式详解(小结)
Aug 26 Javascript
JavaScript鼠标悬停事件用法解析
May 15 Javascript
React实现类似淘宝tab居中切换效果的示例代码
Jun 02 Javascript
js的写法基础分析
Jan 17 #Javascript
js 动态文字滚动的例子
Jan 17 #Javascript
JavaScript中的Array对象使用说明
Jan 17 #Javascript
改进UCHOME的记录发布,增强可访问性用户体验
Jan 17 #Javascript
对xmlHttp对象的理解
Jan 17 #Javascript
对xmlHttp对象方法和属性的理解
Jan 17 #Javascript
Grid得到选择行数据的方法总结
Jan 17 #Javascript
You might like
php数字运算验证码的实现代码
2015/07/30 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
CodeIgniter 完美解决URL含有中文字符串
2016/05/13 PHP
php强制下载文件函数
2016/08/24 PHP
javascript 常用方法总结
2009/06/03 Javascript
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
javascript 当前日期转化为中文的实现代码
2010/05/13 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
jQuery阻止同类型事件小结
2013/04/19 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
聊一聊Vue.js过渡效果
2016/09/07 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
2017/01/10 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
2017/12/05 jQuery
浅谈Node 调试工具入门教程
2018/03/20 Javascript
浅析vue-router原理
2018/10/19 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
在pycharm中开发vue的方法步骤
2020/03/04 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
Flask入门教程实例:搭建一个静态博客
2015/03/27 Python
Python中的ConfigParser模块使用详解
2015/05/04 Python
Python实现ssh批量登录并执行命令
2016/10/25 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
商场父亲节活动方案
2014/08/27 职场文书
学校运动会报道稿
2014/09/23 职场文书
计划生育诚信协议书
2014/11/02 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
女性健康讲座主持词
2015/07/04 职场文书
关于分班的感言
2015/08/04 职场文书
Java elasticsearch安装以及部署教程
2021/06/28 Java/Android
JavaScript中isPrototypeOf函数
2021/11/07 Javascript