A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© sunrise2 高级黑马   /  2014-7-21 08:41  /  1538 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

    C#后台程序与HTML页面中JS方法互调(功能类似于Ajax中的DWR)
   此方法适用于 C#中嵌入WebBrowser(浏览器) 通过浏览器中加载的页面与C#的后台代码进行交互

一、C#程序
1、在C#窗体中添加WebBrowser(浏览器),将页面的URL添加到浏览器中。
2、窗体代码添加 using System.Runtime.InteropServices;//和Html页面交互使用

在类的上一行添加 [ComVisible(true)]//和Html页面交互使用
在类的构造其中添加

  1. this.webB.ObjectForScripting = this; //和Html页面交互使用
复制代码

如:
  1. using System.Runtime.InteropServices;

  2. namespace slgdjb {     [ComVisible(true)]     public partial class Frm_Index : Form     {         public Frm_Index()         {             InitializeComponent();             this.webB.ObjectForScripting = this;          }

  3.    }

  4. }
复制代码

3、添加供Html页面调用的方法
如:
该方法的方法名即为Html页面JS中所要调用的方法名
  1. public string myAction(object para) {   //方法内容在此写           }
复制代码

4、C#程序调用Html页面JS方法
首先要获得Html页面的Document,然后再调用Html页面的JS方法
如:
  1. HtmlDocument doc = webB.Document; string[] objArray = new string[2]; objArray[0] = "a";

  2. objArray[1] = "b"; //调用Html页面js方法,JSMonth为JS方法名,objArray为传递的参数。

  3. //JS中不能接收对象,但可以接收整形、字符串、字符串数组。 doc.InvokeScript("JSMonth",objArray);
复制代码

二、Html页面中JS方法调用C#方法
1、在Html页面JS中调用C#程序的方法,若C#中的方法有返回值,则JS可以得到。
如:

  1. //myAction为C#中方法的方法名,para为该方法的参数。

  2. var str = window.external.myAction(para);
复制代码


2、供C#调用的Html页面中JS的方法

该方法的方法名即为C#中所要调用的方法名  obj即为要传递的参数。若传递的参数为数组,则在JS
方法中可直接使用arguments[index(数组参数编号)]表示数组的参数值。arguments为JS默认数组参数,其好处在于JS方法不必写传递的参数。

  1. function JSMonth(obj){

  2. //若obj为数组,则obj[0]等价于arguments[0];其方法名可改写为JSMonth()

  3. }
复制代码




1 个回复

倒序浏览
厉害 有用收藏了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马