`
380071587
  • 浏览: 493445 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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# winfrom webbrowser控件 内嵌火狐内核内核

    标题中的"C# WinFrom WebBrowser控件内嵌火狐内核内核",意味着我们将探讨如何在C#的WinForm应用中替换默认的`WebBrowser`控件,使其能够利用Mozilla Firefox的Gecko内核进行网页渲染。这通常涉及到使用第三方库,如...

    WPF中webBrowser控件与脚本交互(调用托管代码)

    WebBrowser控件是WPF中的一个组件,它基于Internet Explorer的ActiveX控件,可以显示HTML页面,执行JavaScript,并与.NET Framework进行交互。尽管它依赖于IE引擎,但并不意味着它会显示完整的浏览器界面,而是作为...

    C#获取WebBrowser中的cookie和userAgent

    在C#的WebBrowser控件中,可以通过`WebBrowser.ObjectForScripting`属性设置一个对象,然后在JavaScript中读取navigator.userAgent,再通过该对象传递回C#。以下是一个例子: 1. 首先,定义一个公共方法供...

    C# 用WebBrowser实现的多页面浏览器

    在C#中使用WebBrowser控件,开发者可以通过.NET的API来控制和扩展浏览器功能,例如导航到特定URL、获取网页内容、执行JavaScript代码等。 实现多页面浏览器的关键在于管理和切换不同的WebBrowser实例。通常,每个...

    WebBrowser控件技巧集

    4. **JavaScript交互**:`Document.InvokeScript`方法允许调用网页中的JavaScript函数,反之,网页也可以通过`window.external`对象调用控件端的.NET方法,实现C#与JavaScript之间的双向通信。 5. **打印功能**:...

    C#判断webbrowser页面最终加载完成

    综上所述,要判断WebBrowser控件的页面是否最终加载完成,通常需要结合多种策略,例如监听`DocumentCompleted`事件,检查`ReadyState`,监控`ProgressChanged`,以及可能的话,利用JavaScript交互。根据具体的应用...

    MFC使用WebBrowser控件调用百度地图API案例

    WebBrowser控件是MFC中一个强大的组件,它允许我们在应用程序内部嵌入Internet Explorer浏览器引擎,从而可以显示网页、执行JavaScript代码,以及与网页进行交互。在本案例中,我们将利用这一特性,通过调用百度地图...

    基于C#的webbrowser浏览器

    【描述】在C#中使用WebBrowser控件,可以实现很多实用的功能,例如自动化网页交互、网页数据抓取、本地离线浏览等。开发者可以通过编程方式控制WebBrowser的行为,比如导航到特定URL、执行JavaScript代码、处理页面...

    C# 利用WebBrowser获取网页信息

    在.NET框架中,C#提供了一个内置的控件——`WebBrowser`,它允许开发者在应用程序内部嵌入一个浏览器引擎,从而实现与网页交互的功能。本篇将详细讲解如何利用C#的`WebBrowser`控件来获取网页信息,包括HTML源代码、...

    C# Webbrowser+Flash 点击

    在C#的WebBrowser控件中,虽然默认情况下可能无法直接与Flash内容交互,但通过调用控件的InvokeScript方法,可以执行Flash对象公开的JavaScript接口来实现间接交互。这意味着,如果Flash内容提供了JavaScript API来...

    .NET的WebBrowser控件的的介绍及用法(方法、属性和事件)

    - JavaScript交互:使用`ExecuteScript`方法执行JavaScript代码,与网页内容进行交互。 - HTML文档操作:通过`Document`属性访问HTML元素,实现对网页内容的读取和修改。 - 打印网页:使用`Print`方法方便地打印...

    C# webbrowser控件执行js脚本源码

    通过上述分析可以看出,`WebBrowser`控件提供了丰富的API来与网页进行交互,包括执行JavaScript脚本、获取/修改DOM元素等。这对于自动化测试、数据抓取等场景非常有用。在实际应用中需要注意的是,由于`WebBrowser`...

    C# 扩展的比较完整的WebBrowser控件

    `WebBrowser`控件在C#中的使用非常简单,只需在设计界面中添加该控件,然后通过代码设置其`Url`属性即可加载网页。例如: ```csharp webBrowser1.Url = new Uri("http://www.example.com"); ``` 2. **导航事件...

    一个使用WebBrowser控件获取Web数据的例子

    WebBrowser控件通常被用于.NET框架(如Visual Basic或C#)中,它允许应用程序内嵌一个浏览器引擎,从而能够浏览和与网页进行交互。 在描述中提到的网页 "http://www.portinfo.net.cn/spinfo/premanifest.php" 是一...

    Winform测试WebBrowser控件对应的IE版本

    与B/S(浏览器/服务器)架构的网页应用不同,C/S应用中的WebBrowser控件可以直接利用本地系统资源,无需通过网络加载网页,这使得它在某些情况下比直接打开浏览器更加高效。 要了解WebBrowser控件所使用的IE版本,...

    IE WebBrowser控件基本使用

    通过以上介绍,我们可以看到,IE WebBrowser控件为.NET开发提供了强大的网页展示和交互功能。不过需要注意,由于该控件基于旧版IE,可能不支持一些现代Web技术,如HTML5的新特性。在新项目中,可能需要考虑使用更...

    C# WebBrowser 任意切换IE版本

    在.NET框架中,C#的`WebBrowser`控件是一个非常实用的组件,它允许开发者在C/S(客户端/服务器)应用程序中内嵌一个浏览器,从而实现与B/S(浏览器/服务器)应用的交互。然而,`WebBrowser`控件默认使用的IE版本可能...

    C# WebBrowser的应用

    除了基本的浏览功能,WebBrowser控件还支持与JavaScript的交互。通过`webBrowser1.Document.InvokeScript("functionName", parameters)`,你可以调用页面上的JavaScript函数,并传递参数。这使得C#应用程序可以与...

    C# WebBrowser页面内容缩放

    总的来说,通过继承和扩展C#的`WebBrowser`控件,我们可以为用户创建一个具备页面缩放功能的浏览器组件,从而增强Windows应用程序的功能性和易用性。这种技术不仅适用于展示网页内容,还适用于任何需要内嵌网页视图...

    C# winfrom窗体显示百度地图

    总结起来,通过C# WinForms的WebBrowser控件,我们可以轻松地在桌面应用中嵌入百度地图。关键在于理解和运用WebBrowser控件的Navigate方法,以及正确编写HTML和调用百度地图API。这个过程涉及到了C#的事件处理、文件...

Global site tag (gtag.js) - Google Analytics