zoukankan      html  css  js  c++  java
  • 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;
    }

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

    为了彻底解决这个问题,我们借助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();
        }

    ---------------------
    作者:jxufewbt
    来源:CSDN
    原文:https://blog.csdn.net/jxufewbt/article/details/1758405
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    HDU 5642 King's Order 动态规划
    HDU 5640 King's Cake GCD
    HDU 5641 King's Phone 模拟
    HDU 5299 Circles Game 博弈论 暴力
    HDU 5294 Tricks Device 网络流 最短路
    HDU 5289 Assignment rmq
    HDU 5288 OO’s Sequence 水题
    星际争霸 虚空之遗 人族5BB 操作流程
    Codeforces Beta Round #3 D. Least Cost Bracket Sequence 优先队列
    Codeforces Beta Round #3 C. Tic-tac-toe 模拟题
  • 原文地址:https://www.cnblogs.com/soundcode/p/10774900.html
Copyright © 2011-2022 走看看