WebBrowser脚本错误的完美解决方案

当IE浏览器遇到脚本错误时浏览器,左下角会出现一个黄色图标,点击能够查看脚本错误的详细信息,并不会有弹出的错误信息框。当咱们使用WebBrowser控件时有错误信息框弹出,这样程序显的很不友好,并且会让一些自动执行的程序暂停。我看到有人采起的解决方案是作一个窗体杀手程序来关闭弹出的窗体。今天探讨的方法是从控件解决问题。web


一、SHDocVw.dll 浏览器

在COM时代咱们使用的WebBrowser控件是SHDocVw.dll。屏蔽错误信息的方法很简单使用下面的一句就能够搞定。 
WebBrowser1.Silent = true;
二、.Net中 框架

在.Net中提供了托管的WebBrowser可供咱们使用,固然咱们仍然能够在.Net中使用COM组建SHDocVw.dll,若是使用SHDocVw.dll
处理错误方式和上面的方法同样。但若是咱们是使用.Net组件如何解决这个问题呢? ide

这个组件给咱们提供了一个方法ScriptErrorsSuppressed 。可是在.net framework2.0中他是不起做用的,听说在低版本中使用以下的方式解决this

webBrowser1.ScriptErrorsSuppressed = true;
(听说在.net framework2.0之前是这样,我没有使用过) .net

那么在.net framework2.0中如何解决这个问题呢? orm

有一种方法不能完全解决,能够部分解决问题这里也介绍给你们。 
//捕获控件的错误
 this.WebBrowser.Document.Window.Error += new HtmlElementErrorEventHandler(Window_Error);
//对错误进行处理
void Window_Error(object sender, HtmlElementErrorEventArgs e)
{
     // 本身的处理代码
    e.Handled = true;
}blog

三、上面的方法对于多个框架嵌套等等的情形仍是不能很好的解决。 ip

为了完全解决这个问题,咱们借助AxWebBrowser来解决WebBrowser的问题。 class

咱们定义一个本身的类,他的父类是WebBrowser,之后使用这个类就能够了。在这个类的定义中须要引用SHDocVw。 
class EWebBrowser : System.Windows.Forms.WebBrowser
{
    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();    }} --------------------- 做者:jxufewbt 来源:CSDN 原文:https://blog.csdn.net/jxufewbt/article/details/1758405 版权声明:本文为博主原创文章,转载请附上博文连接!

相关文章
相关标签/搜索