在webbrowser c#control中停止警告javascript弹出窗口

本网站: http : //blog.joins.com/media/folderListSlide.asp?uid = ddatk&folder = 3&list_id = 9960150

有这个代码:

alert('¿Ã¹Ù¸¥ Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù.'); 

所以我的网页浏览器控件显示弹出窗口,如何在不使用sendkeys输入的情况下绕过弹出窗口?

ProgressChanged事件处理程序中,您插入一个脚本元素,该脚本元素用您自己的函数替换Javascript alert函数,它不执行任何操作:

 private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e) { if (webBrowser1.ReadyState == WebBrowserReadyState.Complete) { HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0]; HtmlElement scriptEl = webBrowser1.Document.CreateElement("script"); IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement; string alertBlocker = "window.alert = function () { }"; element.text = alertBlocker; head.AppendChild(scriptEl); } } 

为此,您需要添加对Microsoft.mshtml的引用并use mshtml; 在你的forms。

如果您打算不在页面上使用alert()函数,您也可以覆盖它。 例如:

  

如果你确实需要使用JavaScript的警报function,你可以“重载”它:

  

处理IDocHostShowUI :: ShowMessage并返回S_OK。 有关示例,请访问http://www.codeproject.com/KB/miscctrl/csEXWB.aspx 。

解决方案是错误的

 private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e) { if (webBrowser1.ReadyState == WebBrowserReadyState.Complete) { HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0]; HtmlElement scriptEl = webBrowser1.Document.CreateElement("script"); IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement; string alertBlocker = "window.alert = function () { }"; element.text = alertBlocker; head.AppendChild(scriptEl); } } 

似乎处理Windows挂钩的消息是解决方案

我认为你在WinForm应用程序中使用WebBroswer在javascript中使用alert(xxx)导航页面? 你可以试试:

 broswer.Navigated += (sender, args) => { var document = (sender as WebBrowser).DocumentText; //find the alert scripts and remove/replace them } 

您可以通过设置禁用所有弹出窗口

 webBrowser.ScriptErrorsSuppressed = true; 

尽管名称,这个设置实际上阻止所有弹出窗口,包括alert()