在Windows系統上,微軟提供了相當好用的WebBrowser Control供程式設計師使用,而其中的 DocumentComplete事件更是不可或缺的要件之一,但是在處理有Frames的網頁時,往往觸發DocumentComplete時,網頁並未全部讀取完畢。
先說明,其實標題有誤,這並不是誤判..只是DocumentComplete的運作方式比較特別,詳情可以參考msdn
http://msdn.microsoft.com/workshop/browser/webbrowser/reference/events/documentcomplete.asp
http://dev.csdn.net/develop/article/13/13449.shtm
在上面的網頁中有提供一些解決,但是我覺得並不是最簡單的,其實應該只要用一個count,紀錄 DocumentComplete的次數是否跟frames的數量一樣多即可,原始碼如下:
private void axWebBrowser1_DocumentComplete(object sender, AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e)
{
mshtml.HTMLDocument HTMLDoc = (mshtml.HTMLDocument) this.axWebBrowser1.Document;
if (this.iFramesCount == HTMLDoc.frames.length)
{
this.iFramesCount = 0 ;
//Anything you want to do
}
else
{
this.iFramesCount++;
}
}
[@more@]