【问题标题】:How to know whether WebBrowser navigating a error page?如何知道 WebBrowser 是否导航错误页面?
【发布时间】:2009-05-19 03:21:53
【问题描述】:

例如,我们导航到 http://www.ggg111.com,这是一个错误 URL。但在 WebBrowser 中会显示一个错误页面:

找不到网页 HTTP 400 最可能的原因: 地址可能有输入错误。 如果您单击了链接,则该链接可能已过期。 你可以尝试什么: 重新输入地址。 返回到前一页。 转到并查找您想要的信息。

如何知道WebBrowser是否在浏览错误页面?

也检查一下: https://sso.youshang.com/sso/userAuthnAction.do1

HTTP 状态 404 - /sso/userAuthnAction.do1 类型状态报告 消息 /sso/userAuthnAction.do1 描述 请求的资源 (/sso/userAuthnAction.do1) 不可用。

【问题讨论】:

  • 你的问题一点都不清楚。我看到您将问题标记为与 C# 相关。你的意思是,你怎么知道嵌入式WebBrowser控制请求是否产生了HTTP错误码?

标签: c#


【解决方案1】:

基于此控件:http://www.codeproject.com/KB/cpp/ExtendedWebBrowser.aspx

有 NavigateError 函数,在导航过程中发生错误时触发。 这是我修改后的代码:

先添加事件参数类:


public class NavigateErrorArgs : EventArgs
{
    public object StatusCode { get; set; }

    public NavigateErrorArgs()
            : base()
    { }

    public NavigateErrorArgs(object statusCode)
            : base()
    {
       this.StatusCode = statusCode;
    }
}

然后在ExtendedWebBrowser 类中添加委托和事件:

public delegate void NavigateErrorHandler(object sender, NavigateErrorArgs e); public event NavigateErrorHandler NavigateError; protected void OnNavigateError(NavigateErrorArgs e) { if (NavigateError != null) NavigateError(this, e); }

并修改类 WebBrowserExtendedEvents 中的方法:


public void NavigateError(object pDisp, ref object URL, ref object frame, ref object statusCode, ref bool cancel)
{
    _Browser.OnNavigateError(new NavigateErrorArgs(statusCode));
}

【讨论】:

    【解决方案2】:

    不确定,但是,.... 试试看,...

    string check = webBrowser1.DocumentText;
            if (check.IndexOf("The webpage cannot be found") > 1)
            {
                MessageBox.Show("ERROR OCCURED");
                //what else you want to do, do here!!!
            } 
    

    这将搜索给定的文本,如果找到将执行进一步的代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      • 1970-01-01
      • 1970-01-01
      • 2016-10-02
      • 1970-01-01
      • 2014-07-26
      • 1970-01-01
      相关资源
      最近更新 更多