当前位置:编程学习 > C#/ASP.NET >>

如何获取web的弹出内容(alert、confirm)

因特殊原因,无法使用webbrowse控件
改用以下方法获取页面

SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows();
            string filename = "";
            foreach (SHDocVw.InternetExplorer ie in shellWindows)
            {
                filename = System.IO.Path.GetFileNameWithoutExtension(ie.FullName).ToLower();
                if (filename.Equals("iexplore"))
                {
                    mshtml.IHTMLDocument2 mainDoc = ie.Document as mshtml.IHTMLDocument2;
                    docs = h.GetDocs(mainDoc);
                }
            }
//通过获取的doc,写入一个span(Alert_Span)之后,调用下面方法
public void GetAlert(mshtml.HTMLDocument _doc)
        {
            _doc.parentWindow.execScript("function alert(s){ var       span=document.getElementById('Alert_Span');span.innerHTML=s;return;}");
        }
//相当于组织alert 弹出,并接收alert的内容至span
//最后 通过 mshtml.HTMLSpanElement 就能获取到需要的弹出内容

这是该网站改版之前用的一个办法,现在调试无法使用。怀疑是加了提交(查询)验证(验证
页面的完整性?或者其他)    
求大神,有没有其他方法获取alert内容并禁止alert弹出?(不能使用webbwrose) --------------------编程问答-------------------- 不好意思,写的急 是webbrowser控件 --------------------编程问答-------------------- 只要注入这样一段脚本
window.alert = function (message) {
    。。。
};
就可以拦截alert函数了。 --------------------编程问答--------------------
把alert弹框去掉 直接赋值不行么 --------------------编程问答--------------------
引用 2 楼 caozhy 的回复:
只要注入这样一段脚本
window.alert = function (message) {
    。。。
};
就可以拦截alert函数了。

这个跟我原来用的方法没什么区别吧?
而且怎么获取alert 内容
我原来用的其实也是重写alert事件
这样直接写入js不是一样通不过验证吗? --------------------编程问答--------------------
引用 3 楼 Hsuifengershi 的回复:

把alert弹框去掉 直接赋值不行么

呵呵,网站不是我的。
不想一下下去点击,做个自动查询、赋值、提交的软件 --------------------编程问答-------------------- 你原来什么方法?你那样写有用么。 --------------------编程问答-------------------- 原来的
public void GetAlert(mshtml.HTMLDocument _doc)
        {
            _doc.parentWindow.execScript("function alert(s){ var       span=document.getElementById('Alert_Span');span.innerHTML=s;return;}");
        }

网站改版前 一直用 用的很正常 --------------------编程问答-------------------- webbrower + 模拟点击 --------------------编程问答-------------------- ls 已说不能用webbrower --------------------编程问答--------------------
已解决。
略作修改
public void GetAlert(mshtml.HTMLDocument _doc)
        {
            _doc.parentWindow.execScript("function alert(s){ document.title=s;return;}");
        }
用mshtml 获取下title 的值即可,每次提交前将title置空
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,