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 相关文章推荐
jQuery 打造动态渐变按钮 详细图文教程
Apr 25 Javascript
日历查询的算法 如何计算某一天是星期几
Dec 12 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
May 14 Javascript
node.js操作mongodb学习小结
Apr 25 Javascript
javascript基础知识
Jun 07 Javascript
JavaScript作用域示例详解
Jul 07 Javascript
JavaScript文件的同步和异步加载的实现代码
Aug 19 Javascript
vuex 使用文档小结篇
Jan 11 Javascript
详解js类型判断
May 22 Javascript
JS多个异步请求 按顺序执行next实现解析
Sep 16 Javascript
js 实现watch监听数据变化的代码
Oct 13 Javascript
JavaScript使用canvas绘制坐标和线
Apr 28 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超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
2019/12/11 PHP
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
js常用自定义公共函数汇总
2014/01/15 Javascript
jquery获取多个checkbox的值异步提交给php
2015/07/07 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
2016/06/29 Javascript
BootStrap入门学习第一篇
2017/08/28 Javascript
详解cordova打包成webapp的方法
2017/10/18 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
Python程序语言快速上手教程
2012/07/18 Python
Python标准库与第三方库详解
2014/07/22 Python
Python文件和目录操作详解
2015/02/08 Python
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
详解Django框架中的视图级缓存
2015/07/23 Python
Python3实现的回文数判断及罗马数字转整数算法示例
2019/03/27 Python
python小程序实现刷票功能详解
2019/07/17 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
2019/08/30 Python
Python批量启动多线程代码实例
2020/02/18 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
仿酷狗html5手机音乐播放器主要部分代码
2013/05/15 HTML / CSS
手把手教你实现一个canvas智绘画板的方法
2019/03/04 HTML / CSS
HTML5新增form控件和表单属性实例代码详解
2019/05/15 HTML / CSS
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
村干部培训方案
2014/05/02 职场文书
北大自主招生自荐信
2015/03/04 职场文书
创业计划书之校园超市
2019/09/12 职场文书
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python