博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebBrowser脚本错误的完美解决方案
阅读量:4570 次
发布时间:2019-06-08

本文共 1475 字,大约阅读时间需要 4 分钟。

原文:

 

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

1、SHDocVw.dll
在COM时代我们使用的WebBrowser控件是SHDocVw.dll。屏蔽错误信息的方法很简单使用下面的一句就可以搞定。
WebBrowser1.Silent = true
2、.Net中
在.Net中提供了托管的WebBrowser可供我们使用,当然我们仍然可以在.Net中使用COM组建SHDocVw.dll,如果使用SHDocVw.dll
处理错误方式和上面的方法一样。但如果我们是使用.Net组件如何解决这个问题呢?
这个组件给我们提供了一个方法ScriptErrorsSuppressed 。但是在.net framework2.0中他是不起作用的,据说在低版本中使用如下的方式解决
webBrowser1.ScriptErrorsSuppressed = true(据说在.net framework2.0以前是这样,我没有使用过)
那么在.net framework2.0中如何解决这个问题呢?
有一种方法不能彻底解决,可以部分解决问题这里也介绍给大家。
//捕获控件的错误
 this.WebBrowser.Document.Window.Error += new HtmlElementErrorEventHandler(Window_Error);
//对错误进行处理
 void Window_Error(object sender, HtmlElementErrorEventArgs e)
        {
             // 自己的处理代码
            e.Handled = true;
        }
上面的方法对于多个框架嵌套等等的情形还是不能很好的解决。

为了彻底解决这个问题,我们借助AxWebBrowser来解决WebBrowser的问题。

我们定义一个自己的类,他的父类是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();
        }
    }

从上面的代码可以看出EWebBrowser截取了AxWebBrowser接口,并利用了AxWebBrowser的属性Silent来实现。

posted on
2014-02-22 22:44 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/3561423.html

你可能感兴趣的文章
mybatis无法给带有下划线属性赋值问题
查看>>
java.lang.NoSuchMethodException: com.sun.tools.javac.util.List.<init>()
查看>>
Could not set property of class with value There is no setter for property named
查看>>
Could not find result map com.youotech.tl_cons_credit_rating.entity.Result
查看>>
Element ui 上传文件组件(单文件上传) 点击提交 没反应
查看>>
vue子传父、父传子
查看>>
centos安装ffmpeg4.2
查看>>
启动程序添加启动脚本
查看>>
CF1194E Count The Rectangles
查看>>
Gym100212C Order-Preserving Codes
查看>>
多校2019 Contest 2 hdu6602 Longest Subarray
查看>>
ARC076F Exhausted
查看>>
TC1570 DesertWind
查看>>
CF277D Google Code Jam
查看>>
(七)unittest单元测试框架
查看>>
(八) 自动化测试的实例(以浏览器为例)
查看>>
js获取单选框和复选框的值并判断值存在后允许转跳
查看>>
任务一:零基础HTML编码
查看>>
C#类和结构以及堆和栈大烩菜(本来就迷,那就让暴风来的更猛烈吧!)
查看>>
Bayan 2012-2013 Elimination Round (ACM ICPC Rules, English statements) A. Old Peykan
查看>>