WebBrowser中的腳本錯誤處理

WebBrowser中的腳本錯誤處理 

 

 


  當IE瀏覽器遇到時腳本錯誤,左下角會出現一個黃色圖標,點擊可以查看腳本錯誤的詳細信息,並不會有彈出的錯誤信息框。但是WebBrowser控件則沒有這麼聰明,它會彈出錯誤信息框,使得程序顯的很不友好,而且會讓一些自動執行的程序暫停。雖然WebBrowser提供了ScriptErrorsSuppressed屬性,經過嘗試,結果是令人遺憾的,通過設置該屬性可以解決部分問題,但不能徹底解決。在此探討兩種解決方案:一是通過截獲WebBrowser.Document.Window.Error事件,並阻止WebBrowser繼續處理錯誤來解決。如下: 
    //註冊捕獲控件的錯誤的處理事件 
    this.WebBrowser.Document.Window.Error += 
      new HtmlElementErrorEventHandler(Window_Error); 
    //對錯誤進行處理 
    void Window_Error(object sender, HtmlElementErrorEventArgs e) 
    { 
        e.Handled = true; // 阻止其他地方繼續處理 
    } 
上面的方法可以解決大部分問題,但對於多個框架嵌套等等的情形還是不能很好的解決,於是只能自己動手封裝一個MyWebBrowser了,然後用我們自己的MyWebBrowser來替代WebBrowser。如下: 
public class MyWebBrowser : System.Windows.Forms.WebBrowser 

    private SHDocVw.IWebBrowser2 Iwb2; 

    protected override void AttachInterfaces(object nativeActiveXObject) 
    { 
        Iwb2 = (SHDocVw.IWebBrowser2) nativeActiveXObject; 
        Iwb2.Silent = true; 
        base.AttachInterfaces(nativeActiveXObject); 
    } 

    protected override void DetachInterfaces() 
    { 
        Iwb2 = null; 
        base.DetachInterfaces(); 
    } 


這種方法能能很好的解決問題,其實使用過非託管WebBrowser的朋友肯定看出來了,實際上是通過引用SHDocVw繞過託管代碼,直接SHDocVw.IWebBrowser2.Silent = true,最原始的也是最有效的。 

==================以上網上原話 
轉:http://blog.csdn.net/freeliver54/archive/2009/03/26/4610788.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章