0
我正在嘗試使用.NET WebBrowser控件並遇到了一個常見問題 - 如何知道頁面何時完全加載?我看了看,看到Google,發現了很多例子和問題,所以我試了一下。我試圖導航的第一個地方是http://www.microsoft.com。它沒有那麼好。爲什麼.NET WebBrowser DocumentCompleted爲microsoft.com激發過多次?
我的代碼如下。我嘗試了兩種不同的方法 - 一種是使用Url比較,另一種是計算幀數。既沒有按照我的預期工作......我在Text值中得到了「Form1 - Done - Done - Done - Done」,這意味着該頁以某種方式完成了多次。
是否有更好,更可靠的方法來使用複雜的網頁?
這裏是我的代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WebBrowserCompleted
{
public partial class Form1 : Form
{
Uri navTarget = new Uri(@"http://www.microsoft.com");
public Form1()
{
InitializeComponent();
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
//webBrowser1.Navigate(navTarget);
startNavigate(@"http://www.microsoft.com");
}
private int mFrameCount;
private void startNavigate(string url)
{
mFrameCount = 0;
webBrowser1.Navigate(url);
}
private void DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
mFrameCount += 1;
bool done = true;
if (webBrowser1.Document != null)
{
HtmlWindow win = webBrowser1.Document.Window;
if (win.Frames.Count > mFrameCount && win.Frames.Count > 0)
done = false;
}
if (done)
{
Console.WriteLine("Now it is really done");
this.Text = this.Text + " - Done";
}
}
}
}