四联光电智能照明论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3547|回复: 0
打印 上一主题 下一主题

用webBrowser打开网页出现脚本错误怎么办

[复制链接]
  • TA的每日心情
    开心
    2022-6-10 09:59
  • 366

    主题

    741

    帖子

    9649

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    9649
    跳转到指定楼层
    楼主
    发表于 2016-10-14 08:48:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    当IE浏览器遇到脚本错误时,在浏览器左下角会出现一个黄色图标,点击可以查看脚本错误的详细信息,并不会有弹出的错误信息框。我们在用webBrowser编写的程序打开网页,遇到脚本有问题是,会弹出一个错误提示框,需要确认后才能够进行执行。如果我们设计的程序是用来自动处理网页的,那么在出现这种情况时,程序运行被打断,需要人工干预。这显然无法达到我们的要求。
          那么,在使用webBrowser打开网页遇到脚本错误时如何处理才能让程序无干扰的自动运行呢?

          webBrowser给我们提供了一个属性:ScriptErrorsSuppressed 。当不想再遇到脚本错误时弹出错误提示框,可以将该值设为TRUE。

          webBrowser1.ScriptErrorsSuppressed = true;

          ScriptErrorsSuppressed 属性的具体的用法如下:

          将此属性设置为 false 可调试显示在 WebBrowser 控件中的网页。如果要使用该控件向应用程序添加基于 Web 的控件和脚本代码,则此属性十分有用。如果将该控件用作泛型浏览器,则此属性用处不大。完成应用程序的调试后,将此属性设置为 true 以取消显示脚本错误。

          注意:当 ScriptErrorsSuppressed 设置为 true 时,WebBrowser 控件将隐藏其源自基础 ActiveX 控件的所有对话框,而不仅仅是脚本错误。有时,在显示某些对话框(例如,用于浏览器安全设置和用户登录的对话框)时,可能需要取消显示脚本错误。在这种情况下,应将 ScriptErrorsSuppressed 设置为 false,并在 HtmlWindow.Error 事件的处理程序中取消显示脚本错误。

          这种做法的负作用如上面红字描述的,如果只想屏蔽脚本错误,可以用以下方法:

          下面的代码演示如何在不取消显示其他对话框的情况下取消显示脚本错误。在此示例中,将 ScriptErrorsSuppressed 属性设置为 false 以确保显示对话框。HtmlWindow.Error 事件的处理程序取消显示该错误。只有在文档已完成加载时才能访问此事件,因此该处理程序被附加到 DocumentCompleted 事件处理程序中。

    view plaincopy to clipboardprint?
    // 仅隐藏脚本错误,其他错误照样提示   

    private void SuppressScriptErrorsOnly(WebBrowser browser)   
    {   
        // 确信 ScriptErrorsSuppressed 设为 false.   
        browser.ScriptErrorsSuppressed = false;   

        // 处理 DocumentCompleted 事件以访问 Document 对象.   
        browser.DocumentCompleted +=   
            new WebBrowserDocumentCompletedEventHandler(   
                browser_DocumentCompleted);   
    }   

    private void browser_DocumentCompleted(object sender,   
        WebBrowserDocumentCompletedEventArgs e)   
    {   
        ((WebBrowser)sender).Document.Window.Error +=   
            new HtmlElementErrorEventHandler(Window_Error);   
    }   

    private void Window_Error(object sender,   
        HtmlElementErrorEventArgs e)   
    {   
        // 忽略该错误并抑制错误对话框   
        e.Handled = true;   
    }
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Silian Lighting+ ( 蜀ICP备14004521号-1 )

    GMT+8, 2024-5-6 15:46 , Processed in 1.046875 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表