JavaScript与C# Windows应用程序交互方法


Posted in Javascript onJune 29, 2007

一、建立网页

<html>
<head>
      <meta http-equiv="Content-Language" content="zh-cn">
      <script language="javascript" type="text/javascript">
             <!-- 提供给C#程序调用的方法 -->
             function messageBox(message)
             {
                   alert(message);
            }
      </script>
</head>

<body>
      <!-- 调用C#方法 -->
      <button onclick="window.external.MyMessageBox('javascript访问C#代码')" >
      javascript访问C#代码</button>
</body>
</html>

二、建立Windows应用程序

1.       创建Windows应用程序项目

2.       在Form1窗体中添加WebBrowser控件

3.       在Form1类的上方添加

[System.Runtime.InteropServices.ComVisibleAttribute(true)]

这是为了将该类设置为com可访问。如果不进行该声明将会出错。出错信息如下图所示:

如:

[System.Runtime.InteropServices.ComVisibleAttribute(true)]

public partial class Form1 : Form

4.初始化WebBrowser的Url与ObjectForScripting两个属性。

Url属性:WebBrowser控件显示的网页路径

ObjectForScripting属性:该对象可由显示在WebBrowser控件中的网页所包含的脚本代码访问。

将Url属性设置为需要进行操作的页的URL路径。

JavaScript通过window.external调用C#公开的方法。即由ObjectForScripting属性设置的类的实例中所包含的公共方法。具体设置例子如下:

System.IO.FileInfo file = new System.IO.FileInfo("index.htm");

// WebBrowser控件显示的网页路径

webBrowser1.Url = new Uri(file.FullName);

// 将当前类设置为可由脚本访问

webBrowser1.ObjectForScripting = this;

5.C#调用JavaScript方法

通过WebBrowser类的Document属性中的InvokeScript方法调用当前网页的Javascript方法。如:

// 调用JavaScript的messageBox方法,并传入参数

object[] objects = new object[1];

objects[0] = "C#访问JavaScript脚本";

webBrowser1.Document.InvokeScript("messageBox", objects);

完整代码如下:

[System.Runtime.InteropServices.ComVisibleAttribute(true)]

public partial class Form1 : Form

{

   public Form1()

   {

       InitializeComponent();

       System.IO.FileInfo file = new System.IO.FileInfo("index.htm");

       // WebBrowser控件显示的网页路径

       webBrowser1.Url = new Uri(file.FullName);

       // 将当前类设置为可由脚本访问

       webBrowser1.ObjectForScripting = this;

   }

   private void button1_Click(object sender, EventArgs e)

    {

       // 调用JavaScript的messageBox方法,并传入参数

       object[] objects = new object[1];

       objects[0] = "C#访问JavaScript脚本";

       webBrowser1.Document.InvokeScript("messageBox", objects);

   }

   // 提供给JavaScript调用的方法

   public void MyMessageBox(string message)

   {

       MessageBox.Show(message);
   }
}

Dnew.cn 注:原文:http://www.cnblogs.com/xds/archive/2007/03/02/661838.html

Javascript 相关文章推荐
监控 url fragment变化的js代码
Apr 19 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
Mar 01 Javascript
js实现的类似于asp数据字典的数据类型代码实例
Sep 03 Javascript
浅谈重写window对象的方法
Dec 29 Javascript
js判断文本框输入的内容是否为数字
Dec 23 Javascript
Angularjs material 实现搜索框功能
Mar 08 Javascript
JavaScript基础教程——入门必看篇
May 20 Javascript
JS实现获取当前URL和来源URL的方法
Aug 24 Javascript
AngularJs  unit-testing(单元测试)详解
Sep 02 Javascript
十分钟带你快速了解React16新特性
Nov 10 Javascript
vue单页应用加百度统计代码(亲测有效)
Jan 31 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
Nov 06 Javascript
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
Jun 29 #Javascript
javascript之函数直接量(function(){})()
Jun 29 #Javascript
javascript延时重复执行函数 lLoopRun.js
Jun 29 #Javascript
JavaScript 编程引入命名空间的方法
Jun 29 #Javascript
你需要知道的JavsScript可以做什么?
Jun 29 #Javascript
ECMAScript 基础知识
Jun 29 #Javascript
javascript中的几个运算符
Jun 29 #Javascript
You might like
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
PHP学习笔记之二
2011/01/17 PHP
基于PHP的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
浅谈php中mysql与mysqli的区别分析
2013/06/10 PHP
Zend studio文件注释模板设置方法
2013/09/29 PHP
非常重要的php正则表达式详解
2016/01/04 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
用JAVASCRIPT如何给&amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;赋值
2007/04/20 Javascript
css把超出的部分显示为省略号的方法兼容火狐
2008/07/23 Javascript
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
javascript数组去重方法汇总
2015/04/23 Javascript
详解jQuery事件
2017/01/13 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
Vue自定义事件(详解)
2017/08/19 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
微信小程序开发实现消息推送
2020/11/18 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
pygame学习笔记(5):游戏精灵
2015/04/15 Python
Python 多线程抓取图片效率对比
2016/02/27 Python
新手如何快速入门Python(菜鸟必看篇)
2017/06/10 Python
python3.4爬虫demo
2019/01/22 Python
python与mysql数据库交互的实现
2020/01/06 Python
Python实现仿射密码的思路详解
2020/04/23 Python
PHP面试题集
2016/12/18 面试题
5.1手机促销活动
2014/01/17 职场文书
优秀幼教自荐信
2014/02/03 职场文书
情人节活动策划方案
2014/02/27 职场文书
热门专业求职信
2014/05/24 职场文书
建筑专业毕业生自荐信
2014/05/25 职场文书
自主招生学校推荐信
2014/09/26 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
教师研修随笔感言
2015/11/18 职场文书