[C# 网络编程系列]专题四:自定义Web浏览器

转自:http://www.cnblogs.com/zhili/archive/2012/08/24/WebBrowser.html

前言:

前一个专题介绍了自定义的Web服务器,然而向Web服务器发出请求的正是本专题要介绍的Web浏览器,本专题通过简单自定义一个Web浏览器来简单介绍浏览器的工作原理,以及帮助一些初学者揭开浏览器这层神秘的面纱(以前总感觉这些应用感觉很深奥的,没想到自己也可以自定义一个浏览器出来),下面不啰嗦了,进入正题。

一、Web浏览器的介绍

Web浏览器是指可以显示Web服务器或者本地文件系统中的Html文件内容,并让用户与这些文件交互的一种软件,它是网络服务的客户端浏览程序,可向Web服务器发送请求,并对服务器返回的超文本信息和各种媒体、图片进行解释和显示。

浏览器主要通过Http协议与服务器交互并获得网页,现在主流的浏览器有:IE,Google Chrome(谷歌浏览器)、Mozilla Firefox(火狐)、Opera浏览器、世界之窗、360安全浏览器等。

Web浏览器的组成

一般来说,Web浏览器由控制器和解释器组成,控制器负责解释鼠标点击与键盘输入,并调用其他组件用于执行用户的指定的操作。例如,当用户输入一个URL或单击一个超链接时,控制器接收并分析该命令,调用一个HTML解释器来解释该页面,并将解释后的结果显示在用户的浏览器上。

解释器对于浏览器来说是很重要的, 解释器,也就是解释引擎,负责对网页语法(如HTML、Javascript)的解释并显示网页,解释器决定了浏览器如何显示页面,是浏览器最重要最核心的一个部分,所以一般我们所说的浏览器内核指的就是浏览器的解释器。

不同浏览器产品可能使用同一个内核,浏览器内核常见的有四种:Trident、Gecko、PrestoWebkit, 他们与主流浏览器的对于关系如下表:

内核

浏览器产品

Trident

IE,Maxthon(傲游),世界之窗,腾讯TT,搜狗浏览器,360安全浏览器

Gecko

Mozilla Firefox(火狐)

Presto

Opera浏览器

Webkit

苹果Safari浏览器,Google Chrome(谷歌浏览器)及苹果Iphone手机浏览引擎

二、.NET平台对浏览器开发的支持

浏览器软件一般都不是从头开始开发的,而是基于某种内核之上的扩展。同样,微软.NET平台封装了IE浏览器内核并以COM组件的形式提供用户,这个COM组件就是WebBrowser控件,该控件实现了浏览器中几乎全部的基本功能。

WebBrowser就是一个以IE(Trident)为内核,实现了基本功能的Web浏览器。使用WebBrowser控件可以在Windows窗体应用程序中浏览网页,WebBrowser控件位于工具箱中,使用时只需要将它直接拖拉到程序窗口中。

下面介绍WebBrowser控件的常用的属性和方法

这里我直接摘自MSDN中的一个表来说明的:

名称 说明

Document 属性

获取一个对象,用于提供对当前网页的 HTML 文档对象模型 (DOM) 的托管访问。

DocumentCompleted 事件

网页完成加载时发生。

DocumentText 属性

获取或设置当前网页的 HTML 内容。

DocumentTitle 属性

获取当前网页的标题。

GoBack 方法

定位到历史记录中的上一页。

GoForward 方法

定位到历史记录中的下一页。

Navigate 方法

定位到指定的 URL。

Navigating 事件

导航开始之前发生,使操作可以被取消。

ObjectForScripting 属性

获取或设置网页脚本代码可以用来与应用程序进行通信的对象。

Print 方法

打印当前的网页。

Refresh 方法

重新加载当前的网页。

Stop 方法

暂停当前的导航,停止动态页元素,如声音和动画。

Url 属性

获取或设置当前网页的 URL。设置该属性时,会将该控件定位到新的 URL。

三、在.NET平台下自定义Web浏览器

下面是自定义浏览器的一些效果图:

浏览器的主页面:

[C# 网络编程系列]专题四:自定义Web浏览器

点击查看->源文件->UTF-8后就可以查看Html的源码界面:

[C# 网络编程系列]专题四:自定义Web浏览器

关于窗口的设计页面:

[C# 网络编程系列]专题四:自定义Web浏览器

在搜索栏里面输入下载后利用百度搜索引擎后显示的页面:

[C# 网络编程系列]专题四:自定义Web浏览器

四、总结

本专题主要对Web浏览器的介绍,并且自定义了一个简单的Web浏览器,希望通过本专题,大家可以对浏览器的工作原理有所了解。如果大家有什么任何疑问或者我有说的不对的地方还请大家留言来告诉我。讲到这里本专题也算结束,后面将介绍TCP编程和UDP编程,以及介绍完这两个专题后将为大家介绍如何开发一个即时通信聊天的工具(类似QQ的应用程序)。

补充: 鉴于很多朋友推荐使用非IE内核来实现一个浏览器的功能,这里分享下Webkit.net(WebKit .NET 是一个 C# 的组件封装了 WebKit 浏览器引擎,通过它可以在 .NET 应用中简单的使用(Google Chrome的内核)WebKit 浏览器引擎)的源码地址,也给有兴趣的朋友研究,当然我也会研究下,之后会和大家分享下这个工具的使用。同时感谢大家的留言和建议。
Webkit.net源码地址为:http://sourceforge.net/projects/webkitdotnet/

如果觉得有帮助的还请大家推荐下, 源代码链接为:http://files.cnblogs.com/zhili/WebBrowser.zip

上一篇:数论 - 高精度Fibonacci数 --- UVa 10183 : How Many Fibs ?


下一篇:Qt Creator plugin动手实践(2)自己动手写qt creator插件,实现自定义工具栏按钮