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#