本网站: http://blog.joins.com/media/folderListSlide.asp?uid=ddatk&folder=3&list_id=9960150
有这段代码:
<script>alert('¿Ã¹Ù¸¥ Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù.');</script>
所以我的网页浏览器控件显示弹出窗口,如何在不使用sendkeys输入的情况下绕过弹出窗口?
答案 0 :(得分:5)
在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;
的引用。
答案 1 :(得分:4)
如果您打算不在页面上使用alert()
功能,您也可以覆盖它。 E.g:
<script type="text/javascript">
alert = function(){}
</script>
如果你确实需要使用JavaScript的警报功能,你可以'重载'它:
<script type="text/javascript">
var fnAlert = alert;
alert = function(message,doshow) {
if (doshow === true) {
fnAlert(message);
}
}
alert("You won't see this");
alert("You will see this",true);
</script>
答案 2 :(得分:4)
处理IDocHostShowUI :: ShowMessage并返回S_OK。 请查看http://www.codeproject.com/KB/miscctrl/csEXWB.aspx以获取示例。
答案 3 :(得分:2)
给出的解决方案是错误的
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);
}
}
似乎处理消息的窗口挂钩是解决方案
答案 4 :(得分:1)
我认为您在WinForm应用程序中使用alert(xxx)
在其javascript中导航页面WebBroswer
?你可以尝试:
broswer.Navigated += (sender, args) =>
{
var document = (sender as WebBrowser).DocumentText;
//find the alert scripts and remove/replace them
}
答案 5 :(得分:-1)
您可以通过设置
来禁用所有弹出窗口webBrowser.ScriptErrorsSuppressed = true;
尽管有这个名字,但这个设置实际上阻止了所有弹出窗口,包括alert()