我正在使用webbrowser控件在VS 2010 C#中开发Windows窗体应用程序。 我的目标是在这个网站中自动导航,但是当我在某一点上时,网站将弹出一个javascript警报,这将停止自动化直到我按下OK按钮。 我有点通过在弹出时模拟输入按钮来解决问题,但是应用程序应该保持专注以使其工作。 我的问题是,有没有办法从网站上杀死这个自定义的JavaScript警报(我没有访问方,从客户端杀死它)所以它没有显示或任何其他方法来解决这个问题? 显示的javascript警报(消息框)不是错误,是由于某种原因该网站的程序员放置的javascript警报。
答案 0 :(得分:0)
您可以尝试使用Navigated
事件并在加载页面之前拦截DocumentText
以删除alert(...);
引用。
来自MSDN上的Navigated
页:
处理
Navigated
事件,以便在WebBrowser
控件导航到新文档时收到通知。发生Navigated
事件时,新文档已开始加载,这意味着您可以通过Document
,DocumentText
和DocumentStream
属性访问加载的内容。
以下是一些代码:
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace Your.App
{
public class PopupSuppress
{
WebBrowser _wb;
public PopupSupress()
{
_wb = new WebBrowser();
_wb.Navigated += new WebBrowserNavigatedEventHandler(_wb_Navigated);
}
void _wb_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
string alertRegexPattern = "alert\\([\\s\\S]*\\);";
//make sure to only write to _wb.DocumentText if there is a change.
//This will prompt a reloading of the page (and another 'Navigated' event) [see MSDN link]
if(Regex.IsMatch(_wb.DocumentText, alertRegexPattern))
_wb.DocumentText = Regex.Replace(_wb.DocumentText, alertRegexPattern, string.Empty);
}
}
}
源头/资源: