webbrowser屏蔽弹出窗口的问题

本文介绍了一种通过在.NET应用中屏蔽网页弹出框的技术,具体包括使用WebBrowser控件并覆盖其Navigated事件来实现。解释了弹出框在不同环境下表现差异的原因,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用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.youkuaiyun.com/topics/370068168
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值