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>

配置运行成功的话,可以看到相互调用的效果

时间: 2024-12-26 16:18:06

C#通过webbrowser控件与javascript交互的相关文章

android中webview控件和javascript交互实例_Android

当我们要实现丰富的图文混排效果的时候,我们一般会使用webview,这是一个功能十分强大的的控件,来看看官方的解释: 复制代码 代码如下: A View that displays web pages. This class is the basis upon which you can roll your own web browser or simply display some online content within your Activity. It uses the WebKit

android中webview控件和javascript交互实例

当我们要实现丰富的图文混排效果的时候,我们一般会使用webview,这是一个功能十分强大的的控件,来看看官方的解释: 复制代码 代码如下:A View that displays web pages. This class is the basis upon which you can roll your own web browser or simply display some online content within your Activity. It uses the WebKit r

WebBrowser控件的简单应用2

原文:WebBrowser控件的简单应用2 第一个简单应用里面讲述的是如何模拟调用当前网页的元素的事件或者赋值/取值.这次的应用讲述的是1:如何处理弹出新页面的事件(总是在我的浏览器里面现实新页面)2:如何处理window.close事件,让我的浏览器页关闭3:让html页面的js调用我的browse的函数4:如何让我的browse调用html的js函数. 使用场景:一个web程序,让用户使用自定义浏览器来浏览,该web程序会调用浏览者机器上一些接口.我的这个浏览器叫做AppBrowser.关于

在VB中使用IE的 WebBrowser控件改进界面设计

web|webbrowser控件|设计 在VB中使用IE的 WebBrowser控件 改进界面设计 在程序设计中,如何设计出美观.实用,有个性的界面是每个程序设计者在界面设计中追求的目标.随着Windows XP的推出,各种与众不同的华丽界面越来越被程序设计者和软件使用者所认同. 利用Windows中的WebBrowser控件,可以把华丽的网页设计技术应用到界面设计中去,例如微软著名的MSN浏览器的许多界面其实就是一个Web页,Windows XP中的帮助中心.Microsoft Encarta

获取input表签的值-在webbrowser控件中获取文本框的值

问题描述 在webbrowser控件中获取文本框的值 复制授权码 请问高手们怎么才能获取到input标签的值呢 相关文章 javaweb-value为空,如何获取文本框的值? javascript-在js中 如何用Jquery 获取一个文本框中的值 文本框中ID=A js文本框-js获取文本框的值,有默认值 javascript-如何获取HTML网页密码输入框的值? jquery怎么让循环的两个文本框的值相加 servlet-想通过href链接传递文本框的值,该怎么得到文本框的值 textbox

Webbrowser控件史上最强技巧全集

原文:Webbrowser控件史上最强技巧全集 Webbrowser控件史上最强技巧全集 VB调用webbrowser技巧集 1.获得浏览器信息: Private Sub Command1_Click() WebBrowser1.Navigate "http://www.applevb.com" End Sub Private Sub Command2_Click() Dim oWindow Dim oNav Set oWindow = WebBrowser1.Document.par

C#中的WebBrowser控件的使用

关键字:C# WebBrowser 作者:txw1958 原文:http://www.cnblogs.com/txw1958/archive/2012/09/24/CSharp-WebBrowser.html   0.常用方法 Navigate(string urlString):浏览urlString表示的网址 Navigate(System.Uri url):浏览url表示的网址 Navigate(string urlString, string targetFrameName, byte[

ie8-ie自带的webbrowser控件无法分页预览打印

问题描述 ie自带的webbrowser控件无法分页预览打印 RT,我在要分页的div外层套上了 ,但是当执行document.all.WebBrowser.ExecWB(7,1)后,只有第一页可以显示在打印预览界面上,后面的页显示不出来,请问是怎么回事? 相关文章 ie8-IE8的webbrowser控件无法预览页面 webbrowser.execwb-WebBrowser.ExecWB 在chrome下无法识别 网页-VS2010 MFC CHtmlView类的打印预览功能的实现 插件-请问

关于webbrowser控件自动登陆的问题

原文:关于webbrowser控件自动登陆的问题 楼主dtb(陈少)2004-03-04 22:16:55 在 VB / 网络编程 提问 请问怎么用webbrowser自动登陆www.jp168.com,(没有框架的网站试过了可以,这个有框架,登陆页面还会弹出窗口,搞得我晕晕的)     登陆成功后从返回页面里取出input控件uid的值 问题点数:80.回复次数:4 1 楼cutemouse(为梦而生)回复于 2004-05-09 23:54:21 得分 80 控制网页的FORMS行为