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

 此方法适用于 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()
  }

时间: 2024-10-17 03:15:45

C#后台程序与HTML页面中JS方法互调的相关文章

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;

iframe子页面js调用父页面js函数/父页面调用Iframe子页面中js方法

1.假设当前页面为a.html, iframe的src页面为b.html,其代码如下: 1 <span class="tag"><html> 2 <br></span><span class="tag"><head> 3 <br></span><span class="tag"><title></span><s

页面中js按顺序加载完全的方法

页面中js加载完全的方法   function loadScript( url, callback) {     var script = document.createElement("script");     script.type = "text/javascript";     if (script.readyState) {         script.onreadystatechange = function() {             if (

c#后台调用前台与js方法互调

c#后台调用前台与js方法互调 分类: 每天学一点2009-10-22 00:32 1527人阅读 评论(0) 收藏 举报 c#javascript脚本buttonvbscriptstring 很多人都向在服务器端调用客户端的函数来操作,也就是在asp中调用javascript脚本中已经定义好的脚本函数.经过研究,发现了一些勉强的方法. 1. 用Response.Write方法写入脚本 比如在你单击按钮后,先操作数据库,完了后显示已经完成,可以在最后想调用的地方写上Response.Write(

jsp页面中创建方法

在JSP页面中是用 <%! void function(){ } %> 这种方式可以定义函数. 如果只使用 <% //todo %> 代码块中的代码在编译时将会都被加到 sevlet 中的 excute()  方法中. jsp页面中创建方法

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

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

[Winform-WebBrowser]-在html页面中js调用winForm类方法

在winform项目中嵌入了网页,想通过html页面调用后台方法,如何实现呢?其实很简单,主要有三部: 1.在被调用方法类上加上[ComVisible(true)]标签,意思就是当前类可以com组件的形式供外包调用 2.在webBrowser控件中设置可被html页面调用的类即:webBrowser1.ObjectForScripting = this;前端即可通过window.external访问this对象 3.html页面调用后台方法:window.external.方法名(); 此处的w

用于确保页面中js加载完全,对于优化某网页的加载速度,有什么见解

js方法: <script type="text/javascript"> window.onload = function(){ var userName = "xiaoming"; alert(userName); } </script> jQuery方法: <script type="text/javascript"> $(document).ready(function{ var userName =

两个页面相同js方法兼容

1. a.js页面 1 //Js获取Url参数 2 function request(paras) { 3 var url = location.href; 4 var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&"); 5 var paraObj = {}; 6 for (i = 0; j = paraString[i]; i++) { 7 paraObj[j.s