C# webBrowser打开网页出现脚本错误解决

当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;
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要使用C#在Smobiler应用中登录网页,可以使用WebBrowser控件来加载并显示网页,并通过编程方式模拟用户的登录操作。以下是一个简单的示例: 1. 在Smobiler设计器中,将一个WebBrowser控件添加到你的窗体中。 2. 在窗体的代码文件中,添加以下代码: ```csharp using System; using System.Windows.Forms; namespace YourNamespace { public partial class YourForm : Smobiler.Core.Controls.MobileForm { public YourForm() : base() { InitializeComponent(); } private void YourForm_Load(object sender, EventArgs e) { // 在窗体加载时,设置WebBrowser控件的相关属性 webBrowser1.ScriptErrorsSuppressed = true; // 禁止显示脚本错误信息 webBrowser1.DocumentCompleted += WebBrowser1_DocumentCompleted; // 注册DocumentCompleted事件 webBrowser1.Navigate("https://www.example.com/login"); // 加载登录页面 } private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { // 在页面加载完成后,模拟用户登录操作 if (webBrowser1.Url.ToString() == "https://www.example.com/login") // 判断当前页面是否为登录页面 { // 找到用户名和密码的输入框元素,并设置对应的值 webBrowser1.Document.GetElementById("username").SetAttribute("value", "your_username"); webBrowser1.Document.GetElementById("password").SetAttribute("value", "your_password"); // 找到登录按钮元素,并模拟点击操作 webBrowser1.Document.GetElementById("loginButton").InvokeMember("click"); } else if (webBrowser1.Url.ToString() == "https://www.example.com/home") // 判断当前页面是否为登录成功后的页面 { // 登录成功后的操作,例如显示登录成功提示信息或跳转到其他页面 MessageBox.Show("登录成功!"); // TODO: 其他操作 } } } } ``` 在上述代码中,你需要将"https://www.example.com/login"替换为你要登录的网页地址,"username"和"password"分别替换为用户名和密码输入框的元素ID,"loginButton"替换为登录按钮的元素ID。 请注意,WebBrowser控件加载网页时可能会触发多次DocumentCompleted事件,所以我们在事件处理程序中进行了页面URL的判断,以确保在正确的页面执行相应的操作。 这只是一个简单的示例,实际应用中可能会涉及更复杂的登录逻辑和页面操作。你可以根据具体需求进行相应的修改和扩展。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值