前言:
前一個專題介紹了自定義的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的應用程式)。