此方法适用于 C#中嵌入WebBrowser(浏览器) 通过浏览器中加载的页面与C#的后台代码进行交互。

一、C#程序

1、在C#窗体中添加WebBrowser(浏览器),将页面的URL添加到浏览器中。

2、窗体代码添加 using System.Runtime.InteropServices;//和Html页面交互使用

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

在类的构造其中添加

this.webB.ObjectForScripting = this; //和Html页面交互使用

如:

using System.Runtime.InteropServices;

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

}

}

3、添加供Html页面调用的方法

如:

该方法的方法名即为Html页面JS中所要调用的方法名

public string myAction(object para) {   //方法内容在此写           }

4、C#程序调用Html页面JS方法

首先要获得Html页面的Document,然后再调用Html页面的JS方法

如:

HtmlDocument doc = webB.Document; string[] objArray = new string[2]; objArray[0] = "a";

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

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

二、Html页面中JS方法调用C#方法

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

如:

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

var str = window.external.myAction(para);

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

该方法的方法名即为C#中所要调用的方法名  obj即为要传递的参数。若传递的参数为数组,则在JS

方法中可直接使用arguments[index(数组参数编号)]表示数组的参数值。arguments为JS默认数组参数,其好处在于JS方法不必写传递的参数。

function JSMonth(obj){

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

}

C#后台程序与HTML页面中JS方法互调(功能类似于Ajax中的DWR)的更多相关文章

  1. C#后台程序与HTML页面中JS方法互调

    此方法适用于 C#中嵌入WebBrowser(浏览器) 通过浏览器中加载的页面与C#的后台代码进行交互. 一.C#程序 1.在C#窗体中添加WebBrowser(浏览器),将页面的URL添加到浏览器中 ...

  2. 客户端调用web中js方法(C调B)跨域问题

    这几天遇到了个棘手问题(c调b),经过排错查出了问题. 一,问题描述如下: 1.客户端需要调用father.html中一个js方法,特殊之处在于 这个father.html中有个iframe嵌套了一个 ...

  3. jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?

    jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JA ...

  4. 与正则有关的JS方法结合其在项目中的应用

    与正则有关的JS方法结合其在项目中的应用 前言 最近项目中用到正则匹配比较多,因此打算深入理解和总结下各个与正则有关的方法,再结合在项目中使用的情况.与正则有关的JS方法共有7个,分别是RegExp对 ...

  5. jquery中Live方法不可用,Jquery中Live方法失效

    jquery中Live方法不可用,Jquery中Live方法失效 >>>>>>>>>>>>>>>>> ...

  6. Properties集合中的方法store和Properties集合中的方法load

    Properties集合中的方法store public class Demo01Properties { public static void main(String[] args) throws ...

  7. JS 互相调用iframe页面中js方法、VUE里 iframe 互调方法

    1,父 html 调用子 iframe 内方法: document.getElementById("iframe").contentWindow.func(data1,data2. ...

  8. 微信小程序——详细讲解页面传值(多种方法)

    1.使用navigator的url带参传值 (1)在pageA页面有一个固定的值要传递到pageB页面,比如说一个固定的值user_id要传递给B <navigator url=".. ...

  9. 解决webkit浏览器中js方法中使用window.event提示未定义的问题

    这实际上是一个浏览器兼容性问题,根源百度中一大堆,简要说就是ie中event对象是全局变量,所以哪里都能使用到,但是webkit内核的浏览器中却不存在这个全局变量event,而是以一个隐式的局部变量的 ...

随机推荐

  1. 7、NFC技术:让Android自动运行程序

    用于描述NDEF格式数据的两个重要的类 NdefMessage:描述NDEF格式的信息 NdefRecord:描述NDEF信息的一个信息段  NdefMessage和NdefRecord是Androi ...

  2. Quartz.net 2.0的使用说明

    Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于WinForm和ASP.NET应用中.它提供了巨大的灵活性而不牺牲 ...

  3. Drupal 7.23:函数module_invoke_all()注释

    /** * Invokes a hook in all enabled modules that implement it. * * All arguments are passed by value ...

  4. slowhttps安装及使用心得

    运行及安装环境,kali. 到googlecode上下载安装包,cd到安装目录./configure 运行完毕后输入make 结束后make install 简单点就直接apt-get install ...

  5. VC远控(三)磁盘显示

    服务端: 发送与接收命令 DWORD WINAPI SLisen(LPVOID lparam) { SOCKET client = (SOCKET)lparam; COMMAND command; w ...

  6. 从date中获取相应信息

    创建测试用表: CREATE OR REPLACE VIEW v AS SELECT TO_DATE('2015-5-5 13:14:15', 'YYYY-MM-DD HH24:MI:SS') AS ...

  7. 50种方法优化SQL Server数据库查询

    查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 ...

  8. static public和 public static 区别

    static:加static 的是静态成员,不能实例化在你运行的时候他自己在内存中开辟了块空间,不用在new, 有点像全局变量,如果不用你必须去 实例化(new)才能用 static是静态的意思,pu ...

  9. QCon2013上海站总结 -- 前端开发

    选择这个专题开始主要有两个原因:一是这次会议关于前端开发的内容不多.二是我做过几年前端开发,这个专题对我来说会容易点:) 这次QCon上海关于前端开发有一个Keynote,一个Javascript专题 ...

  10. CSStickyHeaderFlowLayout collectionView headerView 悬浮

    github:https://github.com/levyleo/CSStickyHeaderFlowLayout iOS 10 使用时会出现崩溃:https://github.com/CSStic ...