您的位置:首页 > 其它

webbrowser屏蔽弹出窗口的问题

2014-06-04 11:55 176 查看
用webbrowser访问网站时,如果网站有alert,window.open之类的JS,会在桌面上出现弹出框,并且必须点掉才会完成访问.

我在网上找了屏蔽这些弹出框的方法,就是添加事件Navigated,在里面重新定义这些函数.像下面这样

WebBrowser wbWebBrowser = new WebBrowser();
wbWebBrowser.Navigated += new WebBrowserNavigatedEventHandler(wbWebBrowser_Navigated);
......

private void wbWebBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e)  //屏蔽alert等弹框弹窗的情况
{
WebBrowser wbWebBrowser = (WebBrowser)sender;
StringBuilder sb = new StringBuilder();
sb.AppendLine("function alert(){return;}");
sb.AppendLine("function confirm(){return;}");
sb.AppendLine("function showModalDialog(){return;}");
sb.AppendLine("function window.open(){return;}");
sb.AppendLine("function prompt(){return;}");
string strJS = sb.ToString();
IHTMLWindow2 win = (IHTMLWindow2)wbWebBrowser.Document.Window.DomWindow;
win.execScript(strJS, "Javascript");
win = null;
}


我在自己电脑上试的时候发现确实有效果,不加的话访问有弹出框的网站就会弹出内容.加了以后就不会弹出,可以正常访问完成了.

但把生成的EXE文件放到别人电脑上,他们运行之后都依然会弹出提示框.并且他们装的系统,和配置,跟我自己电脑上的好像也都差不多.

目前我测试发现的规律是,似乎安装了visual studio的电脑就会像我自己电脑一样不弹窗,没安装的就会弹,即使他们装了.net framework也是会弹窗的.

我知道原因了,原来是安装了.NET SDK的机器上自带Microsoft.mshtml.dll.

只安装了.NET framework的机器上没有,需要把

C:\Program Files\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll

放到和EXE文件同一目录下,才可以

转自:http://bbs.csdn.net/topics/370068168
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: