webbrowser 里的js函数和C#的函数互相调用方式
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#的函数互相调用方式的更多相关文章
- js实现类似于add(1)(2)(3)调用方式的方法
群里有人说实现类似add(1)(2)(3)调用方式的方法,结果马上有人回答: var add = function(a){ return function(b){ return function(c) ...
- js闭包(函数内部嵌套一个匿名函数:这个匿名函数可将所在函数的局部变量常驻内存)
js闭包(函数内部嵌套一个匿名函数:这个匿名函数可将所在函数的局部变量常驻内存) 一.总结 1.闭包:就是在一个函数内部嵌套一个匿名函数,这个匿名函数可以访问这个函数的变量. 二.要点 闭包 闭包的相 ...
- [转][C/C++]函数名字修饰(Decorated Name)方式
1.C/C++函数修饰名: 对于我们的C/C++源程序而言,函数名只是函数的一小部分,函数还有调用方式(参数入栈方式).返回值类型.参数个数和各参数类型等信息,对于C++类成员函数,还有更多信息.这些 ...
- js原生的url操作函数,及使用方法。(附:下边还有jquery对url里的中文解码函数)
js原生的url操作函数,完善的. /*****************************/ /* 动态修改url */ /*****************************/ var ...
- js里常用函数之高阶函数
高阶函数:将函数作为参数或者返回值的函数.将函数作为参数的用法通常称作回调函数,函数参数通常会在主函数被执行之后被高阶函数调用. 高阶函数的使用实例.可以把有相似操作的函数用一个高阶函数来重构,精简代 ...
- 原生JS写Ajax的请求函数
一.JS原生ajax ajax:一种请求数据的方式,不需要刷新整个页面:ajax的技术核心是 XMLHttpRequest 对象:ajax 请求过程:创建 XMLHttpRequest 对象.连接服务 ...
- 1. js数据类型_对象_函数_内存
1. js数据类型有哪些? 基本(值)类型 Number ---- 任意数值 String ---- 任意字符串 Boolean ---- true/false undefined ---- unde ...
- Js基础知识6-JavaScript匿名函数和闭包
匿名函数 1,把匿名函数赋值给变量 var test = function() { return 'guoyu'; }; alert(test);//test是个函数 alert(test()); 2 ...
- JS全局变量VAR和THIS--在函数内部,加var是局部变量,不加是全局变量
JS全局变量VAR和THIS 2011-05-23 21:43 很多人都觉得在JavaScript声明一个变量,加var和不加var没有什么区别,实际上是一个错误的观点,如果在函数外面,也就是说在wi ...
随机推荐
- Jmeter性能结果分析
1.压测结果指标 Samples:表示一共发出的请求数 Average:平均响应时间,默认情况下是单个Request的平均响应时间(ms) Error%:测试出现的错误请求数量百分比.若出现错误就要看 ...
- 最近学习了Sqlite3数据库,写一下操作应用以及命令
首先使用Flask-SQLAlchemy管理数据库 使用pip安装:pip install flask-sqlalchemy 接着要配置数据库,定义模型 关于数据库的操作就不再写了.... 使用Fla ...
- 各种sqlite管理工具
sqlite管理工具 平台 下载链接 sqlitestudio 支持多平台 https://sqlitestudio.pl/index.rvt?act=download sqlitespy windo ...
- 第一章 Java入门
一.JAVA的特点 简单.面向对象.平台无关.多线程.动态 (平台无关的原因:在操作系统上再提供JRE,只要提供JRE,JAVA编写的软件就能运行) 二.JAVA平台 JAVA SE(标准版).JAV ...
- myeclipse 修改用户名密码
当在一台公共的电脑上开发程序时,就需要涉及到更改svn用户名和密码,不然直接用本机用户密码提交,有点不妥. win7系统解决方案: C:\Documents and Settings\Administ ...
- 使用context关闭协程以及协程中的协程
package main import ( "sync" "context" "fmt" "time" ) var wg ...
- WCF分布式4:客户端访问寄宿在IIS中的WCF服务
部署过程比较简单,新建一个站点,指向服务的物理路径,设置一个端口.即可. 新建的站点对应一个应用程序池,设置应用程序池中的.NET版本为4.0 写一个测试客户端,访问IIS中的WCF服务,可能会出现, ...
- 继承 in her it
''' in her it 继承 de rive 派生 python2 (经典类|新式类) python3 (新式类) 1. What is inheritance? 什么是继承? 继承是一种新建类的 ...
- 'touch' 不是内部或外部命令,也不是可运行的程序或批处理文件。
touch是Linux环境下的命令,当我们在cmd中使用时会弹出以下问题 在cmd中我们可以使用echo test> 然后我们用dir命令来查看一下当前文件夹下文件有没有创建 文件成功创建.
- scrum第二次冲刺
1.本次冲刺内容 实现长大一条龙的登陆注册. 本次冲刺我们团队实现了长大一条龙的登录注册功能.我们的这个项目严格遵守MVC架构,采用前后端分离的策略.我们将登陆注册分为三层,DAO层:负责与数据 ...