Visual Basic .NET 网页编程
一位读者请求扩展此书,以包含更多内容。 您可以通过 添加新内容 (学习方法) 或在 阅览室 中寻求帮助。 |
一位维基教科书用户认为此页面应该拆分为具有更窄子主题的较小页面。 您可以通过将此大页面拆分为较小的页面来提供帮助。请确保遵循 命名策略。将书籍分成更小的部分可以提供更多关注点,并允许每个部分都能做好一件事,这有利于所有人。 |
.Net Framework 类库中提供了网页浏览功能。在本文中,我们将探讨使用 Visual Basic .Net 加载和操作网页的技术。您将需要 Microsoft Visual Basic .Net 2005 来使用示例代码。
让我们看看 Web 浏览器对象。此对象存在于 .NET Framework 类库中。它是框架 2.0 版中的新功能。如果您分发使用此对象的程序,目标系统必须安装 2.0 版(或更高版本)。
Public wbInCode As New WebBrowser
WebBrowser 对象不需要表单。您可以使用它以编程方式加载网页而无需显示它们。但是,您的程序会受到您为传统浏览器设置的配置设置的约束。例如,如果您允许弹出窗口,那么您加载到 wbInCode 对象中的任何网页都将有权启动弹出窗口。弹出窗口将在浏览器窗口中启动,这些窗口位于您的程序外部,即使您的 WebBrowser 对象没有在窗口中显示也是如此。
如果 JavaScript 方法在加载的页面上崩溃,并且您配置为在发生此类错误时停止,则网页浏览器控件也将停止。您的程序将挂起。简而言之,如果您计划在自动化环境中使用该控件,则需要仔细查看您的默认浏览器设置。否则,您会发现您的应用程序因有缺陷的网页而被阻止,并且您的显示器被弹出窗口淹没。
使用 WebBrowser 对象的 Navigate 方法加载网页
wbInCode.Navigate("http://www.usatoday.com")
等待加载操作完成
While (wbInCode.IsBusy = true)
' Theoretically we shouldn’t need this, but experience says otherwise.
' If we just bang on the IsBusy() method we will use up a lot of CPU time
' and probably bog down the entire computer.
Application.DoEvents()
end
您还可以让对象在加载完成后通知您。DocumentCompleted 事件在页面加载后触发。此示例添加了一个事件处理程序方法,该方法将在页面加载完成后调用。
Private Sub MyWebPagePrinter()
Dim wbInCode As New WebBrowser ' Create a WebBrowser instance.
' Add an event handler. The AddHandler command ‘connects’ your method called
' ReadyToPrint() with the DocumentCompleted event. The DocumentCompleted event
' fires when your WebBrowser object finishes loading the web page.
AddHandler wbInCode.DocumentCompleted, _
New WebBrowserDocumentCompletedEventHandler (AddressOf ReadyToPrint)
' Set the Url property to load the document.
wbInCode.Navigate("http://www.usatoday.com")
End Sub
我们还没有完成。以下是我们在前面代码中提到的 ReadyToPrint 方法。方法的名称是任意的,但参数列表是必需的。请注意,您不必显式调用此方法。它将在网页加载后由 WebBrowser 对象为您调用。
Private Sub ReadyToPrint(ByVal sender As Object, _
ByVal e As WebBrowserDocumentCompletedEventArgs)
' Create a temporary copy of the web browser object.
' At the same time we will assign it a value by coercing the sender argument
' that was passed into this method.
Dim webBrowserTmp As WebBrowser = CType(sender, WebBrowser)
' We know that the web page is fully loaded because this method is running.
' Therefore we don’t have to check if the WebBrowser object is still busy.
' It’s time to print…
webBrowserTmp.Print()
End Sub
加载网站后,您可以访问底层的 HTML。文档对象是网页浏览器对象的属性。
End If
System.Console.WriteLine(tmp)
Next
End Sub