阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 2895|回复: 0

[转帖] 在WebBrowser控件中阻止alert,confirm对话框

[复制链接]
  • TA的每日心情
    难过
    2017-7-9 18:37
  • 签到天数: 43 天

    [LV.5]常住居民I

    发表于 2008-12-11 14:16:45 | 显示全部楼层 |阅读模式
    先引用COM组建mshtml;

    然后处理WebBrowser控件的Navigated事件,代码如下:

    Code

    private
    void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
            
    {
                IHTMLWindow2 win
    = (IHTMLWindow2)webBrowser1.Document.Window.DomWindow;
                
    string s =
    "window.alert = null;\r\nwindow.confirm = null;\r\nwindow.open = null;\r\nwindow.showModalDialog = null;";
                win.execScript(s,
    "javascript");
            }

    8.0用用MSHTML


    在WiinForm使用WebBrowser控件的过程中,常常会被目标网页上弹出的alert、confirm等对话框打断工作流程。google了一下,发现有人采用定时器自动送Enter,也有人采用FindWindow等方法来进行自动关闭,其实,我们只需要在目标网页上执行一段脚本就可以了。
         //禁用目标window的confirm、alert等对话框。
            private void disableConfirm()
            {
                HtmlDocument doc = webBrowser1.Document.Window.Frames["mainFrame"].Document;
                //框架结构中,必须正确的指定目标框架

                IHTMLWindow2 win = (IHTMLWindow2)doc.Window.DomWindow;

                string s = @"function confirm() {";
                s += @"return true;";
                s += @"}";

                s += @"function alert() {}";
                win.execScript(s, "javascript");
            }

    为了使用IHTMLWindow2接口,必须的添加对非托管COM对象的托管包装,在VS2005中很简单,只需要在项目引用里面选择COM选项卡,添加Microsoft HTML Object Library即可,路径为C:\Windows|System32\MSHTML.TLB。在CS文件里面引入托管包装的命名空间mshtml即可。
    using mshtml;

    存取网页的DOM元素:
    HtmlElement euser = webBrowser1.Document.All["txtUserName"];
    HtmlElement bSubmit = webBrowser1.Document.All["Button1"];

    euser.SetAttribute("value","想设置的值");                 //设置DOM元素value属性
    bSubmit.InvokeMember("click");                               //激发该元素的click事件

    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表