1.c#程序里要添加  [System.Runtime.InteropServices.ComVisibleAttribute(true)] 和  webBrowser1.ObjectForScripting = this;

位置:

[System.Runtime.InteropServices.ComVisibleAttribute(true)]
    public partial class Form1 : Form
    {      
        public Form1()
        {
            InitializeComponent();
            refresh();
            string path1 = System.Windows.Forms.Application.StartupPath + @"\" + "PlanMngPage" + @"\home.htm";
            webBrowser1.Navigate(new Uri(path1));
            webBrowser1.ObjectForScripting = this;
        }
 public void MyMessageBox(string message)
        {
            MessageBox.Show(message);
        }

2.在JS使用 window.external.引用的窗体的函数();   来引用C#里的函数

eg:

<body  onload="window.external.MyMessageBox('javascript访问C#代码')">

出处:https://blog.csdn.net/gsch_12/article/details/52224454

再给出一个在C#中调用JS的方法

  private void button1_Click_1(object sender, EventArgs e)
{ if (webBrowser1.Document.GetElementById("a") != null)
{
HtmlElement element = webBrowser1.Document.GetElementById("a");
element.SetAttribute("value", textBox1.Text);
//textBox1.Text = element.GetAttribute("value");
} webBrowser1.Document.InvokeScript("tt", new object[] { "顶一个" }); }

html代码:

<body>
<input type="text" id="a" />
<br />
<input type="button" id="btn" value="test" onclick="tt('haha')" />
<br />
<input type="button" id="btn" value="test C#" onclick="Run('--C#')" />
</body> <script>
function tt(obj) {
alert("hello:" + obj);
}
</script>
<script type="text/javascript" charset="utf-8">
function Run(str) {
window.external.ShowMsg(str);
//alert(str);
}
</script>

webbrowser 里的js函数和C#的函数互相调用方式的更多相关文章

  1. js实现类似于add(1)(2)(3)调用方式的方法

    群里有人说实现类似add(1)(2)(3)调用方式的方法,结果马上有人回答: var add = function(a){ return function(b){ return function(c) ...

  2. js闭包(函数内部嵌套一个匿名函数:这个匿名函数可将所在函数的局部变量常驻内存)

    js闭包(函数内部嵌套一个匿名函数:这个匿名函数可将所在函数的局部变量常驻内存) 一.总结 1.闭包:就是在一个函数内部嵌套一个匿名函数,这个匿名函数可以访问这个函数的变量. 二.要点 闭包 闭包的相 ...

  3. [转][C/C++]函数名字修饰(Decorated Name)方式

    1.C/C++函数修饰名: 对于我们的C/C++源程序而言,函数名只是函数的一小部分,函数还有调用方式(参数入栈方式).返回值类型.参数个数和各参数类型等信息,对于C++类成员函数,还有更多信息.这些 ...

  4. js原生的url操作函数,及使用方法。(附:下边还有jquery对url里的中文解码函数)

    js原生的url操作函数,完善的. /*****************************/ /* 动态修改url */ /*****************************/ var ...

  5. js里常用函数之高阶函数

    高阶函数:将函数作为参数或者返回值的函数.将函数作为参数的用法通常称作回调函数,函数参数通常会在主函数被执行之后被高阶函数调用. 高阶函数的使用实例.可以把有相似操作的函数用一个高阶函数来重构,精简代 ...

  6. 原生JS写Ajax的请求函数

    一.JS原生ajax ajax:一种请求数据的方式,不需要刷新整个页面:ajax的技术核心是 XMLHttpRequest 对象:ajax 请求过程:创建 XMLHttpRequest 对象.连接服务 ...

  7. 1. js数据类型_对象_函数_内存

    1. js数据类型有哪些? 基本(值)类型 Number ---- 任意数值 String ---- 任意字符串 Boolean ---- true/false undefined ---- unde ...

  8. Js基础知识6-JavaScript匿名函数和闭包

    匿名函数 1,把匿名函数赋值给变量 var test = function() { return 'guoyu'; }; alert(test);//test是个函数 alert(test()); 2 ...

  9. JS全局变量VAR和THIS--在函数内部,加var是局部变量,不加是全局变量

    JS全局变量VAR和THIS 2011-05-23 21:43 很多人都觉得在JavaScript声明一个变量,加var和不加var没有什么区别,实际上是一个错误的观点,如果在函数外面,也就是说在wi ...

随机推荐

  1. web网页错误代码的含义

    web网页错误代码的含义 一.1xx 表示临时响应并需要请求者继续进行操作的状态码,例如: 100--继续:101--切换协议 二.2xx 表示服务器成功的处理了请求的状态码,例如: 200--客户端 ...

  2. dom编程艺术笔记1--第二章

    第二章语法部分: 1.js注释:<!-- XXXXX 而“-->”这部分js会认为是注释内容的一部分 2.var 声明变量 不用声明变量类型 3.声明使用一个数组语法:var object ...

  3. xslt 2.0 分组

    把数据拆成200个一组 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet vers ...

  4. windows环境搭建nginx

    1.下载安装nginx 2.启动nginx:点击nginx.exe文件,cmd,进入nginx根目录,执行start nginx 2.修改nginx配置文件nginx.conf 修改配置文件中serv ...

  5. Vue语法学习第三课——计算属性

    模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.对于任何复杂逻辑,都应当使用计算属性. <div id="example&qu ...

  6. json的xpath:简易数据查询

    class JsonQuery(object): def __init__(self, data): super(JsonQuery, self).__init__() self.data = dat ...

  7. 【SHELL】:定时任务删除指定目录

    现有一个需求,需要定时删除积累过久的目录,并且部分目录不可删除.在此,我们分析了一下该父目录的命名结构:非连续性数字命名,部分目录中包含a.txt文件.如下图所示: 在此,我们对此可作如下操作,获取该 ...

  8. 使用VMware Workstation 14 Player或者Oracle VM VirtualBox安装Fedora-Workstation-netinst-x86_64-27-1.6操作系统的相关记录

    无论是在使用哪个(VMware或者Oracle VM)都遇到了一个问题:即使在安装完Fedoras操作系统之后,进行Reboot还是会进入之前一摸一样的安装界面,相当于再次安装.然而最最有效的解决办法 ...

  9. javascript中的Date对象

    Date是什么? Date是日期类的构造函数 也是个对象,用于构造日期对象的实例. 有一个 now()方法,返回截止目前的时间戳(1970.1.1日始). Date.parse()接受 一定格式的日期 ...

  10. TNS-12560,TNS-00583: Valid node checking: unable to parse configuration parameters

    测试环境11.2.0.4.0, os系统linux 5.6 单实例,监听文件,启动报错: [oracle@adg1 admin]$ lsnrctl start LSNRCTL for Linux: V ...