Cũng nh các điều khiển VB, điều khiển WebBrowser chuyển đổi các biến cố khác nhau theo thời gian chuyên biệt. Bạn có thể viết mã lệnh trong các thủ tục biến cố liên hệ để cung cấp sự hồi tiếp ngời dùng cũng nh cho điều đang xảy ra. Ví dụ, ngay trớc khi cho WebBrowser chuyển đến vị trí mới, sẽ chuyển sang biến cố Before Navigate.
a. Biến cố Before Navigate
Private Sub WebBrowserReference_BeforeNavigate(ByVal URL As String, byVal Flag As Long, ByVal TargetFrameName As String PostData As Variant, ByVal Hearders As String Cancel As Boolean). Các tham số đợc nêu trong bảng dới đây:
Bảng 2.7: Các tham số của biến cố Before Navigate
Tham số ý nghĩa
WebBrowser Reference Tên của điều khiển WebBrowser hoặc biến cố đối tợng đợc xác lập theo tên đó
URL Biểu thức chuỗi có giá trị là URL Flags Không đợc dùng hiện hành
TargetFrameName Đợc dùng nếu bạn sẽ hiện thị thông tin trong khung HTML PostData Đợc dùng nếu bạn sẽ hiển thị thông tin trong khung HTML
Headers Đợc dùng nếu bạn gởi thông tin trên máy dịch vụ Web
Cancel Tuỳ chọn True/False. Bạn dùng true để dừng thao tác, hoặc False để cho phép thực hiện thao tác đó.
Bạn có thể giám sát tiến độ sử dụng biến cố Progress Change đợc chuyển đổi định kỳ khi sự tải xuống xảy ra liên tục. Dới đây là cú pháp cho biến cố này:
Private Sub WebBrowserControl_ProgressChange (ByVal Progress As Long ByVal ProgressMax As Long)
Tip: Nếu tham số Progress là -1, thao tác đã qua, hoặc bạn có thể nhân giá trị của tham số Progress theo 100 và chia cho giá trị của ProgressMax để có số phần trăm thực hiện sự tải xuống.
b. Biến cố Download Complete
Khi hoàn tất sự tải xuống, biến cố Download Complete xảy ra. Biến cố này thờng xảy ra khi hoàn tất thao tác đó, nhng cũng xảy ra khi bạn dừng thao tác tải xuống hoặc khi sự tải xuống bị thất bại. Biến cố này đợc chuyển đổi sau khi điều khiển bắt đầu đến URL (Điều này khác với điều xảy ra ở biến cố Navigate Complete, đợc chuyển đổi chỉ khi Browser tìm đến URL một cách thành công).
Tip: Hoạt hình bất kỳ hoặc bộ chỉ thị kiểu đồng hồ cát phải đợc mã hoá trong biến cố này.
Xếp đặt tất cả với nhau nêu ra biểu mẫu chúng tôi đặt chung với bộ trình duyệt chuyên dùng. Nh bạn có thể thấy, các biểu tợng có dáng vẽ tơng tự nh trong Internet Explorer. Để giữ cho mã lệnh ngắn gọn, chúng tôi không bổ sung các menu, cũng không bổ sung khả năng lọc (Chẳng hạn bộ lọc cho http://www.playboy.com đã nêu). Chúng tôi để cho bạn chuyên biệt hoá đồ án này, đợc tạo nên từ điều khiển hình ảnh, thanh trạng thái ở phía dới, hộp hình ảnh có các nút hình ảnh, hộp văn bản và nút lệnh.
2.6. Các cải tiến có thể cho bộ trình duyệt
Bớc kế tiếp để tăng cờng bộ trình duyệt chuyên dùng này không chỉ là xem xét cẩn thận các URL về các địa điểm không thích hợp mà còn kiểm tra nội dung của trang và toàn bộ điều này phải xảy ra trớc khi bạn đề nghị điều khiển WebBrowser hiển thị trang đó. Bạn có thể thực hiện điều này với điều khiển Internet Transfer (MSINET.OCX) đây là một điều khiển riêng, do đó bạn cần đến Project /Components để bổ sung điều khiển này. Điều khiển Transfer có thể tự động điều tác hai giao thức đợc dùng phổ biến nhất trên Internet:
FTP: (File transfer protocol-giao thức truyền tập tin) đợc dùng để gởi các tập tin qua mạng
HTTP (Hypertext transfer protocol-giao thức truyền siêu văn bản) đợc dùng để gởi các tập tin siêu văn bản qua mạng.
Phơng pháp cơ bản để sử dụng điều khiển này là bình thờng đơn giản bạn hãy dùng phơng pháp OpenURL của điều khiển đó cùng với chuỗi nhận biết URL có hiệu lực để nhận thông tin trên trang đó ở dạng HTML thô.
Để xem điều khiển này hoặt động bạn hãy thử nh sau:
Bổ sung hộp văn bản nhiều dòng cho biểu mẫu trống trong đề án mới Bảo đảm Internet Transfer đã đợc bổ sung cho Toolbox qua Project/ Components
Bổ sung điều khiển Internet Transfer cho biểu mẫu Lúc này bạn hãy làm cho form-load có dạng: Sub form_Load()
Show
WindowsState =2 Text1.Font.Size=12
Text1.Height=ScaleHeight
Text1.Text=Inet1.OpenURL (http://www.yahoo.com) End Sub
Sau đó, nh bạn có thể bạn sẽ thấy HTML thô của trang chính ở địa điểm Web của Yahoo.
Tại sao nhận đợc HTML thô sẽ hữu ích? Làm thế nào để kết hợp năng lực của điều khiển Internet Transfer với năng lực của bộ trình duyệt chuyên dùng? Câu trả lời là bạn có thể đơn giản lu HTML trong hộp văn bản không thấy đợc và sau đó sử dụng sự tìm kiếm InStr và Fuzzy để xác định trang có chứa thông tin bạn cần, và ví dụ, trẻ em không đợc xem. Nếu trang này có cha nội dung bạn cần nhng muốn ngăn cản trẻ em xem xét địa điểm đó, đơn giản bạn chỉ không hiển thị trang này trong bộ trình duyệt.
Dới đây là ví dụ để thực hiện điều đó. Giả sử bạn gọi một hàm để thực hiện sự kiểm tra Content OK, và hộp văn bản không thấy đợc có tên là TextContent, bạn có thể dùng mã lệnh tơng tự dới đây để làm việc chung với phơng pháp Navigate.
Private Sub CmdGo_Click() On Error Resume.Next
TxtContent=Inet1.OpenURL(txtAddress.Text) If not ContentOK (txtContent.text) then
MsgBox”Sorry, that is not a site I Want is you to visit” Else
WebBrowser Navigate txtAddress.text End If
End Sub
Dới đây là ví dụ rất đơn giản về hàm ContentOK. Hàm này có giá trị False nếu trong đó có chứa từ “breast-vú” nhng sẽ là true nếu trang đó có các từ “breast cancer-ung th vú”
Function ContentOK(thetext As String) As Boolean Dim Temp As String
Temp=Ucase (TheText)
If InStr (Temp, “BREAST CANCER”) then ContentOK=True
Exit Function
Elself InStr (Temp, “BREAST”) Then ContentOK=False
End if End Function
Cuối cùng, điều khiển Internet Transfer còn có một năng lực khác: Nếu bạn cung cấp tên tập tin cho URL thì Internet Transfer sẽ thực sự lấy tập tin đó (chú ý, ví dụ dới đây sử dụng tập tin rỗng).
FileData$=Inet1.OpenURL(“ftp://osborne.com/catalogue)
Lúc này bạn có thể sử dụng các kỹ thuật điều tác tập tin thông dụng để lu thông tin đó vào tập tin trên đĩa cứng của ngời dùng.
Phơng pháp Open URL sử dụng các phơng pháp synchronous (đồng bộ) để nhận dữ liệu. Điều đó có nghĩa là điều khiển này phải kết thúc sự nắm bắt dữ liệu trớc khi mã lệnh khác có thể đợc thực thi. Nếu bạn muốn cho phép các hoạt động khác có thể xảy ra trong chơng trình VB của mình, bạn cần thay phơng pháp Open URL bằng phơng pháp của điều khiển Internet Transfer có tên là Execute. Phơng pháp này cho phép sự truyền phát asynchronous (không đồng bộ). Nếu bạn dùng phơng pháp Execute, bạn sẽ cần giám sát mọi điều xảy ra trong thủ tục biến cố State Changed của điều khiển Internet Transfer (Bạn xem trợ giúp trực tuyến để biết chi tiết này).
Chơng 2 nhằm tìm hiểu về ngôn ngữ lập trình Visual Basic cho mạng Internet, bổ xung các điều khiển Internet nh điều khiển Internet Browser, điều khiển Internet Transfer, cách viết mã HTML nh cơ sở HTML, cách sử dụng VB Script vào trang Web nh thế nào. Phát triển một ứng dụng DHTML, cách tạo một ứng dụng DHTML, Thêm mã Visual Basic vào trang HTML, phân bố ứng dụng DHTML. Ngoài những vấn đề trên chơng 2 còn trình bầy cách xây dựng bộ trình duyệt chuyên dùng và còn thêm các cải tiến cho bộ trình duyệt. Các vấn đề liên quan đến Trình duyệt chuyên dùng ở chơng 1, chơng 2 đợc xây dựng cụ thể hơn ở chơng 3, là một chơng trình xây dựng một trình duyệt chuyên dùng để truy cập mạng Internet.
Chơng 3
Chơng trình xây dựng một trình duyệt chuyên dùng
3.1. Mục đích của chơng trình
Chơng trình này là để duyệt Web trên Internet, là một chơng trình dễ sử dụng nên rất phù hợp với những gia đình, hay những nơi có trẻ em muốn vào thế giới mạng.
3.2. Các thành phần của chơng trình
Chơng trình này gồm có hai form: +Form Web Viewer
+Form WebBrowser
Form Web Viever có chức năng vào chơng trình duyệt Web, và thoát khỏi ch- ơng trình. Form WebBrowser có chức năng duyệt những trang Web theo yêu cầu của ngời dùng và sử lý chúng theo nhiều cách khác nhau. Các điều khiển trong bộ trình duyệt chuyên dùng nh trong bảng 3.1
Bảng 3.1: Các điều khiển trong bộ trình duyệt chuyên dùng
Kiểu điều khiển Tên Hộp chính
Web Browser BrwWebBrowser PictureBox Picture1
comboBox CboAddress Label LblAddress
Image ImgRefresh tbToolbar Image ImgStop tbToolbar Image ImgForward tbToolbar Image ImgBack tbToolbar Image ImgSearch tbToolbar Image ImgHome tbToolbar Toolbar tbToolbar tbToolbar CommandButton CmdGo
3.3. Nội dung của chơng trình
Option Explicit
Private Sub Form_Unload(Cancel As Integer) Dim i As Integer
'close all sub forms
For i = Forms.Count - 1 To 1 Step -1 Unload Forms(i)
Next End Sub
Unload Me End Sub
Private Sub mnuViewBrowser_Click() Dim frmB As New FrmBrowser
frmB.StartingAddress = "http://www.yahoo.com" frmB.Show
End Sub
Private Sub mnuFileExit_Click() 'unload the form
Unload Me End Sub
Option Explicit
Public StartingAddress As String Dim mbDontNavigateNow As Boolean
Private Sub brwWebBrowser_DownloadComplete() On Error Resume Next
Me.Caption = brwWebBrowser.LocationName End Sub
Private Sub cboAddress_Click() On Error Resume Next
Txtcontent = Inet1.OpenURL(txtaddress.Text) If Not ContentOK(Txtcontent.Text) Then
MsgBox "Sorry, that is not a site I want is you to visit" Else
brwWebBrowser.Navigate cboAddress.Text End If
If mbDontNavigateNow Then Exit Sub timTime.Enabled = True
End Sub
Private Sub cboAddress_KeyPress(KeyAscii As Integer) On Error Resume Next
If KeyAscii = vbKeyReturn Then cboAddress_Click
End If End Sub
Private Sub CmdGo_Click() On Error Resume Next
text1 = Inet1.OpenURL(cboAddress.Text) If Not Choose(text1.Text) Then
MsgBox "Sory, that is not a site I want is you to visit" Else
brwWebBrowser.Navigate cboAddress.Text End If
End Sub
Private Sub Form_Load() On Error Resume Next Me.Show
tbToolbar.Refresh Form_Resize
cboAddress.Move 50, lblAddress.Top + lblAddress.Height + 15 If Len(StartingAddress) > 0 Then cboAddress.Text = StartingAddress cboAddress.AddItem cboAddress.Text timTimer.Enabled = True brwWebBrowser.Navigate StartingAddress End If End Sub
Public Sub NavigateComplete() End Sub
Private Sub Form_Resize()
cboAddress.Width = Me.ScaleWidth - 100 brwWebBrowser.Width = Me.ScaleWidth - 100
brwWebBrowser.Height = Me.ScaleHeight - (picAddress.Top + picAddress.Height) - 100
End Sub
Private Sub Image1_Click() End Sub
Private Sub tbToolbar_ButtonClick(ByVal Button As MSComctlLib.Button) On Error Resume Next
timTimer.Enabled = True Select Case Button.Key Case "Back" brwWebBrowser.GoBack Case "Forward" brwWebBrowser.GoForward Case "Refresh" brwWebBrowser.Refresh Case "Home" brwWebBrowser.GoHome Case "Search" brwWebBrowser.GoSearch Case "Stop" timTimer.Enabled = False brwWebBrowser.Stop Me.Caption = brwWebBrowser.LocationName End Select End Sub
Private Sub timTimer_Timer()
If brwWebBrowser.Busy = False Then timTimer.Enabled = False Me.Caption = brwWebBrowser.LocationName Else Me.Caption = "Working..." End If End Sub
Public Sub brwWebBrowser_NavigateComplete() Dim i As Integer
Dim bFound As Boolean
Me.Caption = brwWebBrowser.LocationName For i = 0 To cboAddress.ListCount - 1
If cboAddress.List(i) = brwWebBrowser.LocationURL Then bFound = True Exit For
End Sub
Private Sub Inet1_StateChanged(ByVal State As Integer) 'cboAddress.List = Inet1.OpenURL("http://yahoo.com") End Sub
Chơng 3 nhằm trình bầy về chơng trình xây dựng một trình duyệt chuyên dùng gồm có mục đích của chơng trình, các thành phần của chơng trình và nội dung của chơng trình. Chơng trình đa ra đã đợc thử nghiệm và hoàn toàn chạy tốt nhng còn thô sơ.
Trong luận văn này vì kinh nghiệm, trình độ và thời gian có hạn lên luận văn còn thô sơ, cha tìm hiểu hết đợc những vấn đề liên quan đến đề tài nh các cải tiến của bộ trình duyệt, an toàn trong quá trình duyệt Web, các trình duyệt chuyên dùng đang đợc sử dụng phổ biến...Vậy em xin kiến nghị tìm hiểu thêm về các vấn đề đó cho trong luận văn để hiểu rõ hơn về đề tài luận văn.