zoukankan      html  css  js  c++  java
  • 禁止WebBrowser控件弹出对话框

    禁止WebBrowser控件弹出对话框
    www.diybl.com 时间:2009-10-21 作者:匿名 编辑:小张 点击: 102 [评论]
    -
    -


    禁止WebBrowser控件弹出对话框
    一、屏蔽alert、confirm、showModalDialog源代码:

    例1、先引用COM组建mshtml;

    引用名称空间mshtml:

    using mshtml;

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

    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");
      } 

    例2、

    我们在使用WebBrowser得到网页代码模拟操作的时候,常常会因为目标网页有弹出对话框(alert、confirm)而中断我们操作,网上也有关于屏蔽这些对话框的介绍,比如另开一线程来定时确定,或是采用FindWindow等方法来进行关闭对话框,但这些办法给人感觉总有点烦琐;其实我们只要在目标网页中重载alert和confirm函数,让它们一直都返回true,那就ok拉,下面我们来说说在.net2.0中如何实现:

    该办法要用到IHTMLWindow2类,所以我们要先添加一个引用:在项目引用里面选择COM选项卡,添加Microsoft HTML Object Library,然后在我们的cs文件中引如名称空间:mshtml;

    然后取得我们目标页面的HtmlDocument,比如:
     HtmlDocument hd = webBrowser1.Document.Window.Frames[0].Document;

    接着进行最重要的一步,重载alert,confirm函数:
     IHTMLWindow2 win = (IHTMLWindow2)hd.Window.DomWindow;
     string s = @"function confirm() {";
     s += @"return true;";
     s += @"}";
     s += @"function alert() {}";
     win.execScript(s, "javascript");

    OK ,大功告成,我们可以继续我们正常的操作拉,比如填写表单并提交:

    hd.All["username"].SetAttribute("value","username");
    hd.All["password"].SetAttribute("value","password");
    hd.All["buttom"].InvokeMember("click");

    运行一下,烦人的alert和confirm总算不见了

    二、关闭调试对话框:

    处理webbrowser的NewWindow事件,设定其传入的参数Cancel=false即可。

  • 相关阅读:
    1082 射击比赛 (20 分)
    1091 N-自守数 (15 分)
    1064 朋友数 (20 分)
    1031 查验身份证 (15 分)
    1028 人口普查 (20 分)
    1059 C语言竞赛 (20 分)
    1083 是否存在相等的差 (20 分)
    1077 互评成绩计算 (20 分)
    792. 高精度减法
    791. 高精度加法
  • 原文地址:https://www.cnblogs.com/xtjatswc/p/2624013.html
Copyright © 2011-2022 走看看