转:【专题四】自定义Web浏览器
前言:
前一个专题介绍了自定义的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、Presto和Webkit, 他们与主流浏览器的对于关系如下表:
|
内核 |
浏览器产品 |
|
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浏览器
下面是自定义浏览器的一些效果图:
浏览器的主页面:

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

关于窗口的设计页面:

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

四、总结
本专题主要对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
转自:http://www.cnblogs.com/zhili/archive/2012/08/24/WebBrowser.html
转:【专题四】自定义Web浏览器的更多相关文章
- [C# 网络编程系列]专题四:自定义Web浏览器
转自:http://www.cnblogs.com/zhili/archive/2012/08/24/WebBrowser.html 前言: 前一个专题介绍了自定义的Web服务器,然而向Web服务器发 ...
- 专题四:自定义Web浏览器
前言: 前一个专题介绍了自定义的Web服务器,然而向Web服务器发出请求的正是本专题要介绍的Web浏览器,本专题通过简单自定义一个Web浏览器来简单介绍浏览器的工作原理,以及帮助一些初学者揭开浏览器这 ...
- 自定义web浏览器(五)
万维网(Web)服务的客户端浏览程序.可向万维网(Web)服务器发送各种请求,并对从服务器发来的超文本信息和各种 多媒体数据格式进行解释.显示和播放--------百度百科对浏览器给出这样的解释.
- VSTO学习(四)——自定义Excel UI 转载
本专题概要 引言 自定义任务窗体(Task Pane) 自定义选项卡,即Ribbon 自定义上下文菜单 小结 引言 在上一个专题中为大家介绍如何创建Excel的解决方案,相信大家通过从上面一个专题之后 ...
- [C# 网络编程系列]专题三:自定义Web服务器
转自:http://www.cnblogs.com/zhili/archive/2012/08/23/2652460.html 前言: 经过前面的专题中对网络层协议和HTTP协议的简单介绍相信大家对网 ...
- 转:【专题三】自定义Web服务器
前言: 经过前面的专题中对网络层协议和HTTP协议的简单介绍相信大家对网络中的协议有了大致的了解的, 本专题将针对HTTP协议定义一个Web服务器,我们平常浏览网页通过在浏览器中输入一个网址就可以看到 ...
- 专题三:自定义Web服务器
前言: 经过前面的专题中对网络层协议和HTTP协议的简单介绍相信大家对网络中的协议有了大致的了解的, 本专题将针对HTTP协议定义一个Web服务器,我们平常浏览网页通过在浏览器中输入一个网址就可以看到 ...
- Spring Boot 2.X(四):Spring Boot 自定义 Web MVC 配置
0.准备 Spring Boot 不仅提供了相当简单使用的自动配置功能,而且开放了非常自由灵活的配置类.Spring MVC 为我们提供了 WebMvcConfigurationSupport 类和一 ...
- 自定义web服务器(四)
关于HTTP协议的具体内容,前面章节已经有所讲解,相信读者已有所了解,在此不在累述,本章节讲解自定义web服务器. 一,.net提供自定义Web服务器的类 以下只是写主要的类 1.HTTPListe ...
随机推荐
- 1、 LwIP协议栈规范翻译——简介
1.简介 在过去几年中,计算机和计算机支持设备接之间的互联到无线网络日趋增加.计算机已经越来越无缝的集成在了日常的设备且价格也在下降.同时,无线网络技术例如蓝牙[HNI+98]和IEEE802.11b ...
- IQ调制原理
现代通信中,IQ调制基本上属于是标准配置,因为利用IQ调制可以做出所有的调制方式. 但是IQ调制到底是怎么工作的,为什么需要星座映射,成型滤波又是用来干嘛的.这个呢,讲通信原理的时候倒是都会泛泛的提到 ...
- Finecms模板标签调用小结 方便快速入门
最近接了一个单子客户要求用finecms进行建站,由于也是php代码,也可以直接调用相关函数,所以上手相对比较快,ytkah总结了一些常用的函数方便您快速入门Finecms.一个网站一般由主页.栏目页 ...
- Always On 集群监听创建失败问题
创建SQL Server Always On监听失败如下 需要增加:1.登陆服务器的域账号创建计算机对象的权限,2.集群名称账号在域环境中创建计算机对象的权限 如果是重建监听:需要3.先删除原先的监听 ...
- 【剑指offer】字符串的排列
一.题目: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 二.思路: ...
- KinectFusion测试
谁告诉我说KinectFusion不能直接在Kinect2上直接用.今天心血来潮看了一下Kinect for Windows SDK中的头文件,发现完全可以用啊. 于是用SDK自带的Demo测试了一下 ...
- Day6 Python常用的模块
一.logging模块 一.日志级别 critical=50 error=40 waring=30 info=20 debug=10 notset=0 二.默认的日志级别是waring(30),默认的 ...
- 【Linux】-NO.8.Linux.4.Command.1.001-【Common Command】-
1.0.0 Summary Tittle:[Linux]-NO.8.Linux.4.Command.1.001-[Common Command]- Style:Linux Series:Command ...
- MacBook PyCharm永久激活
今天下午突然提示到期不能用了,一阵慌慌... 1.下载补丁 注意下载后不需要移动补丁位置,下载文件名为:JetbrainsCrack-release-enc.jar 的文件 链接:https://pa ...
- Docker服务端和客户端
Docker是一个客户端-服务端(c/s)的架构程序