前言:
前一個專題介紹了自定義的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