如何判斷WebBrowser瀏覽器網頁加載完成


在工作中遇到了這樣的問題,那就是要判斷WebBrowser瀏覽器網頁是否加載完成,通過搜索發現網友們解決這一問題的幾種方法,但都不能解決實際問題,現在我們就來看看網友們是如何解決這一問題的。

一、通過DocumentCompleted 事件

    每一次網頁完成之后都后發送DocumentCompleted 事件,但是擁有多個frame時,瀏覽器就會發送多個DocumentCompleted事件,所以到最后也無法最終判斷網頁最終什么時候加載完成。

二、通過webBrowser.ReadyState

   通過每一次讀取webBrowser.ReadyState,如同上前面所列的一樣,每一次DocumentCompleted完成之事都會置ReadyState為Complete ,所以還是無法准確判斷網頁是否完成准確的判斷。

三、通過webBrowser.IsBusy,有的人甚至在此基礎上判斷什么URL或者加Timer等等,程序復雜,效果也不太理想。我想能不能通過多個簡單的方法,准確的判斷網頁否加載完成呢?

    下面看看我的代碼:

    

   private void Delay(int Millisecond) //延遲系統時間,但系統又能同時能執行其它任務;
        {           
             DateTime current = DateTime.Now;            
             while (current.AddMilliseconds(Millisecond) > DateTime.Now)            
              {                
                   Application.DoEvents();//轉讓控制權            
              }           
               return;        
        }

主要的函數:

 private bool WaitWebPageLoad()        
 {            
    int i=0;         
    string sUrl;            
    while (true)            
    {                              
        Delay(50);  //系統延遲50毫秒,夠少了吧!             
        if (webBrowser1.ReadyState == WebBrowserReadyState.Complete) //先判斷是否發生完成事件。
        {                   
             if (!webBrowser1.IsBusy) //再判斷是瀏覽器是否繁忙                  
               {                        
                    i = i + 1;                       
                    if (i == 2)   
                       {                            
                            sUrl = webBrowser1.Url.ToString();                            
                            if (sUrl.Contains("res")) //這是判斷沒有網絡的情況下                           
                                  {                              
                                 return false;                            
                             }                            
                           else                            
                            {                                
                               return true;                            
                            }                        
                     }                       
              continue;                    
              }                    
             i=0;               
         }                 
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM