- 相關推薦
通信網絡設計課程設計簡單瀏覽器的設計(一)
設計要求:I1.簡單瀏覽器的設計
環境要求:Windows95/98/2000/XP/2000,校園網,程序語言自定
功能要求:要編寫能瀏覽網頁的程序。
1.前言
1.1相關背景知識介紹
網頁瀏覽器是日常中人們上網時所必須的應用軟件之一,在多年以前瀏覽器市場里還存在著網景公司的Netscape與微軟公司的Internet Explorer兩大巨頭之間的競爭,然而,隨著個人電腦的迅速普及以及Windows操作系統占領了絕大部分市場(而Windows中又捆綁著IE瀏覽器),微軟的這一壟斷性的行為導致現如今,就只剩下IE了。當然隨著用戶需求的不斷提高,,目前很多公司和個人都開發出了比較不錯的瀏覽器,例如,美觀實用的傲游(MYIE)、小巧玲瓏的Opera以及騰訊公司開發出來的TT瀏覽器等,都受到了許多使用者的青睞。
1.2 文章概要及程序設計思路
1.2.1 文章內容概述
本文以Visual Basic 6.0封裝的IE核心控件—WebBrowser為中心,闡述以及探討網頁瀏覽器編程的基本技巧和思路,并實現一個具有多頁面顯示功能的網頁瀏覽器,并且它能夠將彈出式的窗口捕捉在瀏覽器內。在文章中將以程序代碼的各大模塊為主要線索,解釋并分析部分原代碼,而完整的原代碼將加在附錄里。最后,再將本次畢業設計的成果與現在被廣泛運用的瀏覽器做比較,總結這次設計工作的得失。
1.2.2瀏覽器的功能簡述
本文中所實現的網頁瀏覽器將會具有以下六大功能:
(1)能夠進行基本的網絡導航,例如前進、后退、刷新、停止等等。
(2)在瀏覽器內實現搜索功能。
(3)查看歷史瀏覽記錄。
(4)進行收藏夾管理。
(5)各種屬性設置,如最小化到收藏夾、主頁設置等。
(6)設置IE瀏覽器的各項屬性。
(7)進行頁面打印,并設置打印屬性
2.編譯原理
在計算機的各種編程語言中,作為第四代編程語言的Visual Basic,不僅容易學習和掌握,而且其自身的功能非常強大。在Visual Basic 6.0中,編寫網頁瀏覽器,最簡單的方法就是直接使用Visual Basic提供的網頁控件WebBrowser,在本次設計中也是使用的它,這個ActiveX控件和Windows操作系統所自帶的瀏覽器使用的是同一個內核,即IE內核。
該控件的屬性、方法和事件:
方法 說明
GoBack 相當于IE的“后退”按鈕,使你在當前歷史列表中后退一項
GoForward 相當于IE的“前進”按鈕,使你在當前歷史列表中前進一項
GoHome 相當于IE的“主頁”按鈕,連接用戶默認的主頁
GoSearch 相當于IE的“搜索”按鈕,連接用戶默認的搜索頁面
Navigate 連接到指定的URL
Refresh 刷新當前頁面
Refresh2 同上,只是可以指定刷新級別,所指定的刷新級別的值來自RefreshConstants枚舉表, 該表定義在ExDisp.h中,可以指定的不同值如下: REFRESH_NORMAL 執行簡單的刷新,不將HTTP pragma: no-cache頭發送給服務器 REFRESH_IFEXPIRED 只有在網頁過期后才進行簡單的刷新 REFRESH_CONTINUE 僅作內部使用。在MSDN里寫著DO NOT USE! 請勿使用 REFRESH_COMPLETELY 將包含pragma: no-cache頭的請求發送到服務器
Stop 相當于IE的“停止”按鈕,停止當前頁面及其內容的載入
屬性 說明
Application 如果該對象有效,則返回掌管WebBrowser控件的應用程序實現的自動化對象(IDispatch)。如果在宿主對象中自動化對象無效,這個程序將返回WebBrowser 控件的自動化對象
Parent 返回WebBrowser控件的父自動化對象,通常是一個容器,例如是宿主或IE窗口
Container 返回WebBrowser控件容器的自動化對象。通常該值與Parent屬性返回的值相同
Document 為活動的文檔返回自動化對象。如果HTML當前正被顯示在WebBrowser中,則 Document屬性提供對DHTML Object Model的訪問途徑
TopLevelContainer 返回一個Boolean值,表明IE是否是WebBrowser控件頂層容器,是就返回true
Type 返回已被WebBrowser控件加載的對象的類型。例如:如果加載.doc文件,就會返 回Microsoft Word Document
Left 返回或設置WebBrowser控件窗口的內部左邊與容器窗口左邊的距離
Top 返回或設置WebBrowser控件窗口的內部左邊與容器窗口頂邊的距離
Width 返回或設置WebBrowser窗口的寬度,以像素為單位
Height 返回或設置WebBrowser窗口的高度,以像素為單位
LocationName 返回一個字符串,該字符串包含著WebBrowser當前顯示的資源的名稱,如果資源 是網頁就是網頁的標題;如果是文件或文件夾,就是文件或文件夾的名稱
LocationURL 返回WebBrowser當前正在顯示的資源的URL
Busy 返回一個Boolean值,說明WebBrowser當前是否正在加載URL,如果返回true 就可以使用stop方法來撤銷正在執行的訪問操作
事件 說明
BeforeNavigate2 導航發生前激發,刷新時不激發
CommandStateChange 當命令的激活狀態改變時激發。它表明何時激活或關閉Back和Forward 菜單項或按鈕
DocumentComplete 當整個文檔完成是激發,刷新頁面不激發
DownloadBegin 當某項下載操作已經開始后激發,刷新也可激發此事件
DownloadComplete 當某項下載操作已經完成后激發,刷新也可激發此事件
NavigateComplete2 導航完成后激發,刷新時不激發
NewWindow2 在創建新窗口以前激發
OnFullScreen 當FullScreen屬性改變時激發。該事件采用VARIENT_BOOL的一個輸 入參數來指示IE是全屏顯示方式(VARIENT_TRUE)還是普通顯示方式(VARIENT_FALSE)
OnMenuBar 改變MenuBar的屬性時激發,標示參數是VARIENT_BOOL類型的。 VARIANT_TRUE是可見,VARIANT_ FALSE是隱藏
OnQuit 無論是用戶關閉瀏覽器還是開發者調用Quit方法,當IE退出時就會激發
OnStatusBar 與OnMenuBar調用方法相同,標示狀態欄是否可見。
OnToolBar 調用方法同上,標示工具欄是否可見。
OnVisible 控制窗口的可見或隱藏,也使用一個VARIENT_BOOL類型的參數
StatusTextChange 如果要改變狀態欄中的文字,這個事件就會被激發,但它并不理會程序是否有狀態欄
TitleChange Title有效或改變時激發
3程序原代碼詳解
3.1程序模塊介紹
本文中的網頁瀏覽器系統包括以下十個主要的模塊文件:
1 網頁瀏覽器.frm 瀏覽器的主窗體,用于顯示網頁內容以及菜單和工具欄。
2 Module1.bas,用于聲明各種常用的文件處理函數。
3.2.1整體介紹
包括本文中的程序在內的任何瀏覽器的開發中,其核心技術都利用了微軟公司提供的一個瀏覽器控件—WebBrowser。在Visual Basic 6.0中該控件不是默認就在工具箱里,需要用戶自己將它調出了,先選擇Visual Basic 6.0菜單中的“工程”—>“部件”,在彈出的對話框中選擇“Microsoft Internet Controls”,然后點擊“運用”后“確定”(如下圖3—2)。該控件就會以一個小地球的圖標出現在工具欄里。這樣就可以接著完成后面的編程工作。
主窗體圍繞著WebBrowser控件共有70多個屬性,而其中的事件更是達上百個,也是可見它在整個程序中的重要性。
3.2.2 PageSetup事件
“PageSetup”菜單單擊事件的功能是如下圖3—4所示的頁面設計。
Private Sub mnu_PageSetup_Click ()
brwWebBrowser (TabStrip1.Tabs (CurTab_Index).Tag).ExecWB OLECMDID_PAGESETUP, OLECMDEXECOPT_DODEFAULT
End Sub
3.2.3 “Find On this Page”事件
“Find On this Page”菜單單擊事件,彈出當前所瀏覽網頁內部查找對話框。
Private Sub mnu_EditFind_Click ()
On Error GoTo mnu_EditFind_Click_Error:
SetFocusOnly = True
TabStrip1.SetFocus
brwWebBrowser (TabStrip1.Tabs(CurTab_Index).Tag).SetFocus
SendKeys "^f"
Exit Sub
mnu_EditFind_Click_Error:
ShowErrorMessageBox ("mnu_EditFind_Click")
End Sub
3.2.4 AddToFavorites函數
AddToFavorites函數,將當前瀏覽的網頁添加到收藏夾。
Private Sub mnu_AddToFavorites_Click ()
On Error GoTo mnu_AddToFavorites_Click_Error:
Call AddToFavorites
Exit Sub
mnu_AddToFavorites_Click_Error:
ShowErrorMessageBox ("mnu_AddToFavorites_Click")
End Sub
3.2.5“Internet Options”事件
“Internet Options”菜單單擊事件代碼,用于設置IE的屬性。
Private Sub mnu_InterNetOptions_Click ()
Dim RetVal
RetVal = Shell ("rundll32.exe shell32.dll, Control_RunDLL Inetcpl.cpl", vbNormalFocus)
End Sub
3.4瀏覽器多頁面顯示和捕捉彈出窗口在瀏覽器內構想
支持多頁面顯示和捕捉彈出窗口在瀏覽器內。這兩個功能是IE瀏覽器所不具備的,而實現這兩個功能的關鍵是brwWebBrowser_NewWindow2事件和NewTab、SetTabCaption兩個函數。在brwWebBrowser_NewWindow2事件中“Call NewTab (Me, URL, -99)”調用了NewTab函數,目的就是首先建立一個TAB。
可以通過SSTAB這個控件來完成顯示多網頁的功能的,因此當有一個新的網頁需要顯示的時候,就需要新建一個TAB,而不是另外彈出一個窗口。而SetTabCaption函數的作用就是來設置TAB標題。
4.各種瀏覽器比較
在瀏覽器市場中,由于各方面的原因IE一直都占據著龍頭老大的地位,所以在比較中就以IE作為藍本。Opera瀏覽器可以縮放網頁的大小比例、調整網頁中的圖像、全屏瀏覽等等。傲游Maxthon游覽器中可以鏈接打開一些系統工具。騰訊TT也可以縮放網頁的大小比例。這些都是我值得學習的地方,有點遺憾的是,本人的瀏覽器中不能查看網頁源碼,這是今后需要改進的。對于瀏覽網頁安全的設置方面,Opera、傲游和騰訊TT比IE更直觀,更便于用戶根據自己的實際情況來調整。另外,它們三者都可以更換軟件皮膚,使瀏覽器更加靚麗,而由于設計時間有限,在作品中來不及實現這個功能。
它們三者都嵌入了相應的搜索鏈接,例如,傲游里嵌入了百度搜索。這個功能對于在當今這個內容紛雜繁多的網絡世界里快速高效的尋找到用戶自己想要的資源是非常重要的,是很人性化的設計。這也是值得我學習的。另外,騰訊TT可以根據用戶的IP地址判斷用戶所在的地區,再把該地區兩天的天氣發送到用戶端來,在瀏覽器底部顯示。而且騰訊TT中還添加有多線程的颶風下載器,可以加快用戶下載資源的速度。
Opera、傲游和騰訊TT都是可以支持多頁面顯示的;但在捕捉彈出窗口功能卻略有差異,騰訊TT默認允許彈出窗口,在窗口下過濾此頁、過濾類似的網頁、過濾全部彈出窗口的選擇,這也是因為不是每個彈出的窗口都是廣告,有些是網站的重要公告。傲游在這方面做的稍差點,對于彈出的窗口只是像IE那樣先阻止再詢問的處理方式。而Opera在這方面是把彈出窗口捕捉在瀏覽器內部,只不過它首先還是阻止窗口,然后顯示提示用戶操作窗口,如果用戶無動作瀏覽器將默認為阻止了該彈出窗口。
【通信網絡設計課程設計簡單瀏覽器的設計(一)】相關文章:
基于 DSP 的網絡通信程序設計03-20
通信網絡管理系統的設計要點探析03-29
迷宮問題課程設計11-22
有效課堂的靜態網頁設計課程設計論文05-01
簡單網絡實時消息傳遞工具的設計Java03-08
試論研究性學習的現代教育技術網絡課程設計11-21
課程設計論文致謝詞參考11-24
網絡環境的設計與應用11-13