Salvete! Tôi cần, đơn giản, một chức năng tôi có thể gọi để làm cho mã chờ trang tải trước khi nó tiếp tục. Sau khi cọ rửa trang web để tìm câu trả lời, và không quan tâm trong vài giờ, tôi đã nghĩ ra điều này để giải quyết cho bản thân mình, tình huống khó xử chính xác mà bạn trình bày. Tôi biết tôi đã trễ trong trò chơi với một câu trả lời, nhưng tôi muốn đăng bài này cho bất kỳ ai khác đến cùng.
sử dụng: chỉ cần gọi WaitForPageLoad() chỉ sau một cuộc gọi để chuyển hướng
whatbrowser.Navigate("http://www.google.com")
WaitForPageLoad()
một ví dụ khác chúng ta không kết hợp các tính năng điều hướng với tải trang, bởi vì đôi khi bạn cần phải chờ đợi cho một tải mà không cần điều hướng, ví dụ, bạn có thể cần phải chờ một trang để tải được bắt đầu với sự kiện invokemember
whatbrowser.Document.GetElementById("UserName").InnerText = whatusername
whatbrowser.Document.GetElementById("Password").InnerText = whatpassword
whatbrowser.Document.GetElementById("LoginButton").InvokeMember("click")
WaitForPageLoad()
Đây là mã số: Bạn cần cả hai subs cộng với biến có thể truy cập, pageready
. Đầu tiên, hãy chắc chắn để sửa chữa các biến gọi là whatbrowser
được kiểm soát WebBrowser của bạn
Bây giờ, ở đâu đó trong mô-đun hoặc lớp học của bạn, đặt này:
Private Property pageready As Boolean = False
#Region "Page Loading Functions"
Private Sub WaitForPageLoad()
AddHandler whatbrowser.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
While Not pageready
Application.DoEvents()
End While
pageready = False
End Sub
Private Sub PageWaiter(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)
If whatbrowser.ReadyState = WebBrowserReadyState.Complete Then
pageready = True
RemoveHandler whatbrowser.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
End If
End Sub
#End Region
Tôi muốn biết điều đó quá. ReadyState thường đạt đến 4 ở giữa tải. Chúng ta chỉ cần biết khi nào nó hoàn thành. Đó là tất cả. –
@shubham nếu bạn vẫn gặp sự cố với điều này, hãy cho tôi biết, vì tôi đã phát triển các kỹ thuật để giải quyết vấn đề này trong những năm qua, các phương pháp chưa được biết và chưa được xuất bản.Vấn đề này là vấn đề quan trọng và khó khăn nhất với toàn bộ điều khiển WebBrowser. Đọc một số bài viết gần đây của tôi kiểm soát webbrowser lại (tôi đã thực hiện nhiều trong vài ngày qua) và đặc biệt là bài viết về những hạn chế của kiểm soát WB, nằm trong bình luận tiếp theo của tôi. Về cơ bản, tôi đã giải quyết tất cả các vấn đề, nếu u vẫn cần giúp đỡ (kể từ khi bài ur là cũ) cho tôi biết và tôi có thể giúp bạn. –
Thảo luận của tôi về những hạn chế của kiểm soát WB, tìm câu trả lời của tôi ở đây: http://stackoverflow.com/questions/1495944/webbrowser-control-limitations/9245591#9245591 –