C#通过webbrowser控件与javascript交互
1.C#里调用控件里面网页的js函数
//调用JavaScript的messageBox方法,并传入参数
object[] objects = new object[1];
objects[0] = “C#访问JavaScript脚本";
this.webBrowser1.Document.InvokeScript(“messageBox", objects);//object就是传入的参数,而messageBox则是网页中预定义好的js函数。
通过这种方式C#里面就可以执行Javascript函数,可以把上面的代码放到一个button的click事件里面。
2.webbrowser控件里网页js调用C#窗体的函数
首先需要在代码里面加上
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form{
…..//
}
这样使得C#的com对象是对网页里的javascript可见的。
然后在嵌入网页里面通过“window.external.MyMessageBox(‘javascript访问C#代码’)" ,即通过window.external捕获调用c#定义好的函数。
具体Form.cs代码如下(通过vs创建的c#window窗体应用,拖拽上一个webbrowser控件和button控件。):
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
System.IO.FileInfo file = new System.IO.FileInfo("test.html");
this.webBrowser1.Url = new Uri(file.FullName); // WebBrowser控件显示的网页路径
this.webBrowser1.ObjectForScripting =this;// 将当前类设置为可由脚本访问
} //提供给JavaScript调用的方法
public void MyMessageBox(string message)
{
MessageBox.Show(message);
} private void button1_Click_1(object sender, EventArgs e)
{
//调用JavaScript的messageBox方法,并传入参数
object[] objects = new object[1];
objects[0] = “C#访问JavaScript脚本";
this.webBrowser1.Document.InvokeScript("messageBox", objects);
}
}
test.html内容比较简单:
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<script language="javascript" type="text/javascript">
<!– 提供给C#程序调用的方法 –>
function messageBox(message)
{
alert(message);
}
</script>
</head>
<body>
<!– 调用C#方法 –>
<button onclick="window.external.MyMessageBox('javascript访问C#代码')" >javascript访问C#代码</button>
</body>
</html>
配置运行成功的话,可以看到相互调用的效果
C#通过webbrowser控件与javascript交互的更多相关文章
- c# webBrowser控件与js的交互
转自:http://blog.csdn.net/sd2131512/article/details/7467564 [System.Runtime.InteropServices.ComVisible ...
- C#webbrowser控件技巧(取得javascript变量值,禁止显示脚本错误)
C#中的webbrowser控件比较好用. 下面本人搜索整理的几个小技巧. 1. 从C#中取得javascript的变量值. using mshtml;using System.Reflection; ...
- webbrowser 控件实现WinForm与WebForm交互
WebBrowser 控件可以让你装载Windows Form 应用程序中的 Web 网页和其它采用浏览器的文件.可以使用webbrowser 控件将现有的web框架控制项加入至 Windows Fo ...
- 浏览器自动化的一些体会5 webBrowser控件之winform和webBrowser的交互
从winform访问webBrowser,大致就是利用webBrowser提供的解析dom的方法以及用InvokeScript方法执行javascript.这个相对比较简单. 从webBrowser访 ...
- [JavaScript]WebBrowser控件下IE版本的检测
转载请注明原文地址:https://www.cnblogs.com/litou/p/10772272.htm 在客户端检查用户使用的浏览器类型和版本,都是根据navigator.userAgent属性 ...
- WebBrowser控件的简单应用2
原文:WebBrowser控件的简单应用2 第一个简单应用里面讲述的是如何模拟调用当前网页的元素的事件或者赋值/取值.这次的应用讲述的是1:如何处理弹出新页面的事件(总是在我的浏览器里面现实新页面)2 ...
- winform WebBrowser控件中,cs后台代码执行动态生成的js
很多文章都是好介绍C# 后台cs和js如何交互,cs调用js方法(js方法必须是页面上存在的,已经定义好的),js调用cs方法, 但如果想用cs里面执行动态生成的js代码,如何实现呢? 思路大致是这样 ...
- C# Winform WebBrowser控件
C# WinForm WebBrowser 1.主要用途:使用户可以在窗体中导航网页. 2.注意:WebBrowser 控件会占用大量资源.使用完该控件后一定要调用 Dispose 方法,以便确保及时 ...
- C#中的WebBrowser控件的使用
0.常用方法 Navigate(string urlString):浏览urlString表示的网址 Navigate(System.Uri url):浏览url表示的网址 Navigate(st ...
随机推荐
- C# mvc 上传多个附件
<div class="col-xs-12 mcp-list-item" style="margin-top:20px"> <div clas ...
- 推荐几个对象映射(Object-Object Map)的库
在进行一些MIS相关的项目开发中,我们经常会涉及到一些数据对象和视图模型之间的互相转换, public class Customer //mapped from db { ...
- 什么是webview
WebView(网络视图)能加载显示网页,可以将其视为一个浏览器.它使用了WebKit渲染引擎加载显示网页,实现WebView有以下两种不同的方法:第一种方法的步骤:1.在要Activity中实例化W ...
- python利用opencv去除水印方法
OpenCV(Open Source Computer Vision Library)是一个跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法 在python中可以利用opencv来去除 ...
- nginx搭建前端项目web服务器以及利用反向代理调试远程后台接口
前端同学用nginx搭建自己的web服务器,后台程序专门部署在一台服务器上(我们之前公司就有三套环境,开发/测试/生产),这样做的好处是 1.前端代码基本都是静态文件,重启一次很快,也就几秒钟时间. ...
- ivy由于sha1码不正确导致找不到模块(jar)的错误
sbt设置jboss-interceptor-api-1.1作为依赖,但是找不到 [info] Resolving org.jboss.interceptor#jboss-interceptor-ap ...
- 【云计算】OpenStack项目全面介绍
关于OpenStack孵化项目trove(DBaaS)之我见:http://blog.csdn.net/ddl007/article/details/17253751 OpenStack Trove将 ...
- OpenStack 实现技术分解 (5) 应用开发 — 使用 OpenStackClients 进行二次开发
文件夹 文件夹 前文列表 參考阅读 前言 OpenStackClients 使用 OpenStackClients 获取 project_client object 的 demo 调用 project ...
- RxAndroid 的基本使用
1.基本概念 Rx是RxJava针对Android的定制版本.这个版本中通过增加最少的类使在Android应用中编写响应式组件简单而且无障碍,特别之处在与它还提供了一个Scheduler,可以在主线程 ...
- 关于Fragment的懒加载问题
为了达到界面效果,我们有时需要使用到TabLayout+ViewPager的方式来布局界面,然而ViewPager的adapter总是默认把与当前可见的fragment相邻的两个fragment给加载 ...