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

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

当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来实现。

 

时间: 2024-12-23 09:32:34

WebBrowser脚本错误的完美解决方案的相关文章

预备的完美解决方案,在VC、IE、ASP环境下打印.

打印|解决 一种基于XML的报表开发工具,它支持从设计报表,调用API打印.预览,能支持分布式报表.方便报表的存储.转发.在报表中能嵌入VBScript,能方便地访问VB,VC的变量,能访问COM组件.ADO等遵循ActiveX标准的控件. 包括报表可视化开发界面.报表语法解释器,基于COM的组件.是分布式报表的完美解决方案 语法如下: <?xml version="1.0" encoding="GB2312" ?><!DOCTYPE report

VC、IE、ASP环境下打印、预览的完美解决方案

打印|解决 一种基于XML的报表开发工具,它支持从设计报表,调用API打印.预览,能支持分布式报表.方便报表的存储.转发.在报表中能嵌入VBScript,能方便地访问VB,VC的变量,能访问COM组件.ADO等遵循ActiveX标准的控件. 包括报表可视化开发界面.报表语法解释器,基于COM的组件.是分布式报表的完美解决方案 语法如下: <?xml version="1.0" encoding="GB2312" ?><!DOCTYPE report

CSS表单元素垂直居中完美解决方案

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

Win7系统中u盘里word文档打不开的完美解决方案

 文档打不开的完美解决方案-oa系统打不开word文档"> 原因一:可能是受到病毒的感染导致word文档打不开 解决方法:如果U盘感染病毒造成的Word文档打不开的情况的时候,U盘中的Word文档估计只能删除了,建议大家可以用金山.360等杀毒软件,对U盘中的病毒进行查杀,然后根据提示,删除掉Word文档就可以了. 小贴士:如果已经确定是病毒导致的话,千万不要双击打开这些Word文档,小心对电脑造成影响,也不要对这些Word文档进行备份. 原因二:可能是U盘出现问题损坏造成Word文档打不

换行文字、未知宽高图片垂直居中完美解决方案

原文:换行文字.未知宽高图片垂直居中完美解决方案 垂直居中是一个历史悠久的大问题,要做到兼容所有浏览器少不了要花点时间,网上也流传了很多解决方案,但没发现比我现在用的方案更完美,至少在我的项目是如此. 项目中要用到垂直居中而碰到兼容性问题的,一般都是以下几种情况: 1.换行文字垂直居中 2.图片垂直居中 以上都是在固定宽高的容器里垂直居中,不然的话margin,padding便可实现. 解决垂直居中无非就从几个方面入手,利用行高等于容器高度,模拟表格单元格特性,定位,css3的display:b

Android 6.0调用相机图册崩溃的完美解决方案_Android

最近客户更新系统发现,以前的项目在调用相机的时候,闪退掉了,很奇怪,后来查阅后发现,Android 6.0以后需要程序授权相机权限,默认会给出提示,让用户授权,个人感觉这一特性很好,大概如下: 导入Android V4, V7包! Android Studio 导入很简单,右键项目后找到dependency就ok了. 继承AppCompatActivity public class MainActivity extends AppCompatActivity 引入需要的类库 import and

Domino数据库、邮件归档完美解决方案

问题描述 Domino数据库.邮件归档完美解决方案www.soyxer.com产品功能智能文档搜索引擎,支持多查询条件并发搜索,快速定位所需信息资源,可针对多数据库进行联合搜索.搜索模板,完美解决OA系统信息搜索难题,兼容所有NSF格式的数据库.与Domino/Notes平台一致的人员阅读权限,防止保密信息泄露,保证信息安全.可提升提高Domino/Notes平台性能70%,节约50%以上维护成本.海量数据压缩存储,节省原有40%存储费用.指定数据库归档.历史数据恢复,可指定恢复任意时间的数据到

数据库与图片完美解决方案

数据库与图片完美解决方案 电商商品图品与数据库脏数据完美解决方案 Mr. Neo Chen (netkiller), 陈景峰(BG7NYT) 中国广东省深圳市龙华新区民治街道溪山美地518131+86 13113668890+86 755 29812080<netkiller@msn.com> $Id: MySQL-plugin.xml 587 2013-05-16 09:49:20Z netkiller $ 版权 2011, 2012, 2013 http://netkiller.githu

JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件_jquery

dotNetFlexGrid是一款asp.net原生的异步表格控件,他的前身是Jquery FlexiGrid插件,我们重构了FlexiGrid的大部分Javascript代码,使其工作的更有效率,BUG更少:同时将其封装为dotNet控件,提供了简单易用的使用方式. dotNetFlexGrid扩展和优化了FlexiGrid原有的功能,并提供了更多具有针对性的功能,使用dotNetFlexGrid,您的用户可以轻松拥有如下功能 提供简易的方式自行调整表格列宽 根据实际情况调整表格的大小 针对合