C#后台程序与HTML页面中JS方法互调(功能类似于Ajax中的DWR)
此方法适用于 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)的更多相关文章
- C#后台程序与HTML页面中JS方法互调
此方法适用于 C#中嵌入WebBrowser(浏览器) 通过浏览器中加载的页面与C#的后台代码进行交互. 一.C#程序 1.在C#窗体中添加WebBrowser(浏览器),将页面的URL添加到浏览器中 ...
- 客户端调用web中js方法(C调B)跨域问题
这几天遇到了个棘手问题(c调b),经过排错查出了问题. 一,问题描述如下: 1.客户端需要调用father.html中一个js方法,特殊之处在于 这个father.html中有个iframe嵌套了一个 ...
- jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?
jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JA ...
- 与正则有关的JS方法结合其在项目中的应用
与正则有关的JS方法结合其在项目中的应用 前言 最近项目中用到正则匹配比较多,因此打算深入理解和总结下各个与正则有关的方法,再结合在项目中使用的情况.与正则有关的JS方法共有7个,分别是RegExp对 ...
- jquery中Live方法不可用,Jquery中Live方法失效
jquery中Live方法不可用,Jquery中Live方法失效 >>>>>>>>>>>>>>>>> ...
- Properties集合中的方法store和Properties集合中的方法load
Properties集合中的方法store public class Demo01Properties { public static void main(String[] args) throws ...
- JS 互相调用iframe页面中js方法、VUE里 iframe 互调方法
1,父 html 调用子 iframe 内方法: document.getElementById("iframe").contentWindow.func(data1,data2. ...
- 微信小程序——详细讲解页面传值(多种方法)
1.使用navigator的url带参传值 (1)在pageA页面有一个固定的值要传递到pageB页面,比如说一个固定的值user_id要传递给B <navigator url=".. ...
- 解决webkit浏览器中js方法中使用window.event提示未定义的问题
这实际上是一个浏览器兼容性问题,根源百度中一大堆,简要说就是ie中event对象是全局变量,所以哪里都能使用到,但是webkit内核的浏览器中却不存在这个全局变量event,而是以一个隐式的局部变量的 ...
随机推荐
- LINQ to SQL使用教程
前些时间用LINQ to SQL做了一些项目,现在打算总结一下,帮助新手快速入门,并写一些别的教程没提到的东西. 一.LINQ to SQL和别的LINQ to XXX有什么关系?二.延迟执行(Def ...
- OE7设置菜单为什么这么少?
默认安装的OE7设置菜单只有很少的功能: 如果需要更多的OE定制,必须开启“技术特性”选项:
- selenium-grid2 远程并发控制用例执行
今天闲来无事,随意看了一下selenium,突然注意到grid这个功能以前都是,在读有关selenium的文档时候知道有这么个grid远程控制的功能,但一直没有去试过.所以呢,今天就简单的做了这么个小 ...
- python27+django创建app
python manage.py startapp polls创建一个叫polls的app 编辑文件 polls/models.py : 1 from django.db import models ...
- 将数字映射到字母上 .xml
映射成 A1------A20 B1------B20 ... Z1------Z20 这种形式 数字从0开始编 ...
- Android应用解决65K方法数限制
近日,Android Developers在Google+上宣布了新的Multidex支持库,为方法总数超过65K的Android应用提供了官方支持. 如果你是一名幸运的Android应用开发者,正在 ...
- 学习Python必须要知道的常用模块
在程序设计中,为完成某一功能所需的一段程序或子程序:或指能由编译程序.装配程序等处理的独立程序单位:或指大型软件系统的一部分.本文为你介绍了Python中的两种常用模块. os: 这个模块包含普遍的操 ...
- Flex里的命名空间,fx、mx、s【转】
Flex 4带给我们的,是全新的命名空间.了解这些命名空间必定是一件好事情.Flex 4有三个非常重要的命名空间,分别是: xmlns:fx=”http://ns.adobe.com/mxml/200 ...
- LeetCode(6) - ZigZag Conversion
这个题的要求是给你一个字符串,和一个行数,例如(s = "mysisteristhemostlovelygirl" , row = 4),每一行一个字符串,但是s却得按照zigza ...
- 前端异步解决方案——mmDeferred
Deferred是前端解决异步操作的一种编程范式,后来出现的Promise规范更是让其普适性大大提高.不过Promise规范也存在分岐.现在最流行的是Promise/A规范. Promise/A大致是 ...