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

c# webbrowser 屏蔽网页js脚本报错~~~急急急急急急急急急急

我用c#开发一个浏览器,遇到js报错问题.一直不能很好的解决这个问题..请大家指教..
我的编程环境是vs2005.

开始我用 
  WebBrowser _WebBrowser = new WebBrowser();
  _WebBrowser.ScriptErrorsSuppressed = true;
这种方式屏蔽脚本报错自动弹出的报错框,但是这个方式存在着问题.就是它会把另外的一些 (ActiveX 对话框) 也屏蔽掉,
比如:
   设置网页为主页的框(如图)
   

   还有网页加入收藏弹出的收藏网页的框(如图)
   

   和 不是匿名 网站弹出的用户登录框(如图)
   

上面这三类框 只要 ScriptErrorsSuppressed = true  ,就都无响应了,弹不出来..

后来我也试过用下面这种方法
  ((WebBrowser)sender).Document.Window.Error += new HtmlElementErrorEventHandler(Window_Error);
  void Window_Error(object sender, HtmlElementErrorEventArgs e)
        {
            e.Handled = true;
        }
但这种方法屏蔽脚本报错不理想,,有些可以屏蔽掉,有些则不能屏蔽..

我在网上查了很多资料基本都是下面这种说法:
  定义一个自己的类,他的父类是WebBrowser,以后使用这个类就可以了。在这个类的定义中需要引用SHDocVw
  class EWebBrowser : System.Windows.Forms.WebBrowser
  {
    SHDocVw.IWebBrowser2 Iwb2;

    protected override void AttachInterfaces(object nativeActiveXObject)
    {
        Iwb2 = (SHDocVw.IWebBrowser2) nativeActiveXObject;
        Iwb2.Silent = true;
        base.AttachInterfaces(nativeActiveXObject);
    }

    protected override void DetachInterfaces()
    {
        Iwb2 = null;
        base.DetachInterfaces();
    }
  }
这种方法我也反复试过了,,和第一种一样,, 脚本报错是屏蔽掉了,但是那几个另外的框[设置网页为主页的框,收藏网页的框,不是匿名网站弹出的用户登录框] ,还是弹不出来了..
-------------------------------------------------------------------
所以以上三种我都是过很多次了.都不可以达到理想的效果, 我想要的就是 只 屏蔽掉脚本错误自动报错的框,不屏蔽掉其余的框[设置网页为主页的框,收藏网页的框,不是匿名网站弹出的用户登录框]. 

网上还有一种是说用 浏览器控件的IOleCommandTarget接口的Exec方法...具体的我也不清楚,,但这个网上我只找到了vc版本的代码,没有找到c#版本的..也不知道c#继承IOleCommandTarget怎么实现,请高手知道这种方法(c#版本的),或者其它我还不知道的方法  请指点点我... 请贴出代码..

   
--------------------编程问答-------------------- 我只能帮你顶了....你可以换成你自己的对话框呀,这个应该可以的哦~~ --------------------编程问答-------------------- 你这是想屏蔽对话框,而我是想点确定。。一直无法成功,问题已经提出来了,还没有有效的答案。只能也帮你顶顶了。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,