您的位置:首页 > 其它

使用WebBrowser控件与网页通信,互相调用

2014-06-08 23:11 309 查看
转自:使用WebBrowser控件与网页通信,互相调用

本例程序运行效果图如下所示:



WebBrowser控件之所有强大,一方面是由于控件本身提从了一系列的方法,包括打开网页,获取网页信息,操作网页(如前进后通等),拦截网页事件,另一方面则是提供了与网页相调用的机制。即以下2点:

1:让HTML页面的js调用我们在WebBrowser控件外面编写的函数。

2:让我们可以调用网页中的Javascript代码

如果能够让网页里的Javascript与我们用C#编写的函数互相调用,则理论上,以后的界面都可以交给Webbrowser来处理。这样就解决了一直以来,困扰我们的问题:弱客户端与胖客户端的问题。众所周知,网页程序的优势在于界面开发容易,几行HTML就可以做出惊人的效果,而且更新方便。只需要在服务器端更新,则所有用户都可以立即用上最新的版本。但网页程序由于运行在浏览器里,所以网页不能实现本地计算(其实Javascript也是本地计算,只是效率太低),不能访问本地资源。比如本地文件系统,直接查看网络设备,直接与素统交互,这导致了网页功能的局限性。通过将2者结合,各自做自己擅长的工作,就能解决这一矛盾。Webbrowser控件就是这解这一问题的桥梁。

Javascript与C#两种不同的语言互相调用与通信,依靠的是与语言无关的COM技术(WebBrowser使用了这一技术,实现了相关接口,打通了这2者的桥梁)。所以,我们需要让我们的C#代码类成为一个COM类,只需要在类前面定义一个ComVisibleAttribute属性即可,如下所示:

在我们的C#类变成一个COM类以后,我们还要告诉WebBrowser,让这个类做为Javascript调用的入口类,即指定ObjectForScripting 属性,代码如下所示

关于ObjectForScripting,更详细的信息可以参考这里:http://msdn2.microsoft.com/en-us/library/system.windows.forms.webbrowser.objectforscripting.aspx

做了这些准备工作以后,就可以直接使用WebBrowser控件的Document属性的InvokeScript方法来执行Html中的Javascript代码了。

本例使用到的Javascript代码为:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐