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 相关文章推荐
超级兔子让浮动层消失的前因后果
Mar 09 Javascript
模仿jQuery each函数的链式调用
Jul 22 Javascript
UI Events 用户界面事件
Jun 27 Javascript
jquery插件制作 提示框插件实现代码
Aug 17 Javascript
js 窗口抖动示例
Sep 04 Javascript
js获取当前月的第一天和最后一天的小例子
Nov 18 Javascript
React学习之事件绑定的几种方法对比
Sep 24 Javascript
详解Axios 如何取消已发送的请求
Oct 20 Javascript
jQuery实现动态添加和删除input框代码实例
Mar 29 jQuery
layui监听单元格编辑前后交互的例子
Sep 16 Javascript
Vue两种组件类型:递归组件和动态组件的用法
Aug 06 Javascript
基于JavaScript实现轮播图效果
Jan 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的FTP学习(一)
2006/10/09 PHP
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
2015/09/15 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
2016/09/24 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
javascript 定时器工作原理分析
2016/12/03 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
在Django框架中伪造捕捉到的URLconf值的方法
2015/07/18 Python
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
selenium+python实现自动登录脚本
2018/04/22 Python
PyQt5实现简易计算器
2020/05/30 Python
Python3实现的旋转矩阵图像算法示例
2019/04/03 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
美国百年历史早餐食品供应商:Wolferman’s
2017/01/18 全球购物
全球性的奢侈品梦工厂:Forzieri(福喜利)
2019/02/20 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
商得四方公司面试题(gid+)
2014/04/30 面试题
英语专业学生个人求职信
2014/01/28 职场文书
报告会主持词
2014/04/02 职场文书
个人评语大全
2014/05/04 职场文书
机械电子工程专业自荐书
2014/06/10 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
社区端午节活动总结
2015/02/11 职场文书
交通事故调解协议书
2015/05/20 职场文书
2015年超市工作总结范文
2015/05/26 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
营销策划分析:怎么策划才能更好销量产品?
2019/09/04 职场文书