使用Windows.Forms.Webbrowser.Navigate()时禁用Javascript弹出窗口

2 .net javascript popup console-application webbrowser-control

好吧,我有一个非常令人沮丧的问题.我正在解析一个网页,需要让它执行javascript才能获得我想要的信息.

Form f = new Form();
WebBrowser w = new WebBrowser();
w.Navigate(url);
f.Controls.Add(w);
f.ShowDialog();
HtmlElementCollection hc = w.Document.GetElementsByTagName("button");
Run Code Online (Sandbox Code Playgroud)

这有效,我能够将按钮元素设置得很好,但每次运行时我都会弹出一个弹出窗口.很烦人.弹出窗口是基于javascript的,我需要运行Javascript来获取按钮元素信息.这是弹出窗口的脚本.

<script>
var evilPopup = (getCookieVar("markOpen","PromoPop") == 1);
if (evilPopup != 1) 
{
    PromoPop = window.open('/browse/info.aspx?cid=36193','Advertisement', 'width=365,height=262,screenX=100,screenY=100');

if (PromoPop) 
    {
       PromoPop.blur();
       window.focus();
       setCookieVar("markOpen","PromoPop","1");             
    }
}
</script>
Run Code Online (Sandbox Code Playgroud)

我试图在风向标中添加一个cookie给Forms.Webbrowser控件,但是感到沮丧并放弃了.我尝试设置NoAllowNavagate属性,其他一切都无济于事.

有人可以帮忙吗?另外,有一种方法可以从Console.App获取DomDocument信息而无需打开表单?

谢谢

Mik*_*nen 6

WebBrowser组件具有带有CancelEventArgs的NewWindow事件.所以只需添加类似于的处理程序:

void webBrowser1_NewWindow(object sender, CancelEventArgs e)
{
    e.Cancel = true;
}
Run Code Online (Sandbox Code Playgroud)

当javascript尝试打开弹出窗口时,事件被触发并取消它.