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 相关文章推荐
javascript 二维数组的实现与应用
Mar 16 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
Jul 15 Javascript
Js+Jq获取URL参数的集中方法示例代码
May 20 Javascript
jQuery右下角旋转环状菜单特效代码
Aug 10 Javascript
js实现拖拽效果(构造函数)
Dec 14 Javascript
原生javascript实现解析XML文档与字符串
Mar 01 Javascript
Vue.js每天必学之方法与事件处理器
Sep 06 Javascript
Bootstrap轮播图的使用和理解4
Dec 14 Javascript
微信小程序button组件使用详解
Jan 31 Javascript
npm scripts 使用指南详解
Oct 08 Javascript
JavaScript常见事件处理程序实例总结
Jan 05 Javascript
vue 解决addRoutes多次添加路由重复的操作
Aug 04 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中$_FILES的使用以及注意事项
2013/07/05 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
2015/10/22 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
2016/04/29 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
2020/02/24 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
vue-video-player 断点续播的实现
2021/02/01 Vue.js
复制粘贴功能的Python程序
2008/04/04 Python
Python多线程编程简单介绍
2015/04/13 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
老生常谈python中的重载
2018/11/11 Python
python使用thrift教程的方法示例
2019/03/21 Python
Python正则表达式匹配和提取IP地址
2019/06/06 Python
python requests使用socks5的例子
2019/07/25 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
药学专业大学生自荐信
2013/09/28 职场文书
班主任对学生的评语
2014/04/26 职场文书
委托收款证明
2015/06/23 职场文书
2015最新婚礼主持词
2015/06/30 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP
用JS创建一个录屏功能
2021/11/11 Javascript