您的位置:首页 > Web前端 > JavaScript

c#调用webbrowser,屏蔽js弹窗代码,同时发布exe后仍旧出现弹窗解决办法

2013-04-26 12:38 711 查看
用webbrowser访问网站时,如果网站有alert,window.open之类的JS,会在桌面上出现弹出框,并且必须点掉才会完成访问.
我在网上找了屏蔽这些弹出框的方法,就是添加事件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文件同一目录下,才可以 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C#
相关文章推荐