此方法适用于 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方法互调的更多相关文章

  1. C#后台程序与HTML页面中JS方法互调(功能类似于Ajax中的DWR)

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

  2. 加载 页面 中js 方法

    js 文件中 var mingchen= mingchen|| {    init: function (){ } }; 文件中 mingchen.init(); 注意问题: 在新加载 页面中     ...

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

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

  4. C# winForm webBrowser页面中js调用winForm类方法(转)

      有时我们在winform项目中嵌入了网页,想通过html页面调用后台方法,如何实现呢?其实很简单,主要有三部:   1.在被调用方法类上加上[ComVisible(true)]标签,意思就是当前类 ...

  5. jQuery 互相调用iframe页面中js的方法

    1,子iframe内调用父类函数方法: window.parent.func(); 2,子Iframe中获取父界面的元素: $("#xx", window.parent.docum ...

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

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

  7. aspx 页面中 js 引用与页面后台的数据交互 --【 后台调用 js 】

    js 中调用后台方法   一.用Response.Write方法 Response.Write("<script type='text/javascript'>alert(&qu ...

  8. aspx 页面中 js 引用与页面后台的数据交互 --【 js 调后台】

    后台调用 js 方法 前台调用后台方法与变量:  后台被调用的方法必须是public 或 protected 后台被调用的方法必须是静态的static 方法一:通过WebService来实现 步骤: ...

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

    在winform项目中嵌入了网页,想通过html页面调用后台方法,如何实现呢?其实很简单,主要有三部: 1.在被调用方法类上加上[ComVisible(true)]标签,意思就是当前类可以com组件的 ...

随机推荐

  1. Android JNI 由C/C++本地代码向Java层传递数据

    最近做的Android项目需要调用C代码,进行串口通信及与硬件设备通信,因此要用到JNI,其中本地代码需要向Java层返回三个参数,分别为 参数一:int型: 参数二: 通信指令,本地代码中为unsi ...

  2. malloc的实现

    在做csapp的malloc实验,一开始是按照书上的隐式链表法,发现得分很低.这种方法确实很挫,需要遍历一遍以找到合适的空闲块.于是我想到<STL源码剖析>中stl的内存池,感觉应该可以用 ...

  3. 交叉编译中的 --sysroot 等等在编译时的作用

    --sysroot=dir 的作用 如果在编译时指定了-sysroot=dir 就是为编译时指定了逻辑目录.编译过程中需要引用的库,头文件,如果要到/usr/include目录下去找的情况下,则会在前 ...

  4. JAVA基础英语单词表(上)

    action                            / 'ækʃən /          动作,行为 active                           / 'ækti ...

  5. C# 创建新RTF文件

    这个和WINDOWS创建RTF文件一样 public void CreateRtfFile(string RtfFileName) { RichTextBox richTextBox1 = new R ...

  6. [Webpack 2] Chunking common modules from multiple apps with the Webpack CommonsChunkPlugin

    If you have a multi-page application (as opposed to a single page app), you’re likely sharing module ...

  7. 3第一周课后练习&#183;阅读计划(2)-使用指针来访问私有数据成员

    /* * Copyright (c) 2015, 计算机科学学院,烟台大学 * All rights reserved. * 文件名:test.cpp * 作 靠:刘畅 * 完成日期:2015年 3 ...

  8. innodb_space工具解析 MYSQL 页图解

  9. GCC 编绎选项 转

    gcc提供了大量的警告选项,对代码中可能存在的问题提出警告,通常可以使用-Wall来开启以下警告:           -Waddress -Warray-bounds (only with -O2) ...

  10. Qemu下安装Sun Solairs8简明教程 转

    http://blog.csdn.net/stonesharp/article/details/8928393 Qemu下安装Sun Solairs8简明教程(Centos6. / Win7) 作者: ...