网页右下角弹出广告-demon tools
2023年3月31日发(作者:博通网卡驱动)
WebBrowser脚本错误的完美解决⽅案
当IE浏览器遇到脚本错误时浏览器,左下⾓会出现⼀个黄⾊图标,点击可以查看脚本错误的详细信息,并不会有弹出的错误信息框。当我们
使⽤WebBrowser控件时有错误信息框弹出,这样程序显的很不友好,⽽且会让⼀些⾃动执⾏的程序暂停。我看到有⼈采取的解决⽅案是做
⼀个窗体杀⼿程序来关闭弹出的窗体。今天探讨的⽅法是从控件解决问题。
1、
在COM时代我们使⽤的WebBrowser控件是。屏蔽错误信息的⽅法很简单使⽤下⾯的⼀句就可以搞定。
=true
2、.Net中
在.Net中提供了托管的WebBrowser可供我们使⽤,当然我们仍然可以在.Net中使⽤COM组建,如果使⽤
处理错误⽅式和上⾯的⽅法⼀样。但如果我们是使⽤.Net组件如何解决这个问题呢?
这个组件给我们提供了⼀个⽅法ScriptErrorsSuppressed。但是在.netframework2.0中他是不起作⽤的,据说在低版本中使⽤如下的⽅式解
决
ErrorsSuppressed=true(据说在.netframework2.0以前是这样,我没有使⽤过)
那么在.netframework2.0中如何解决这个问题呢?
有⼀种⽅法不能彻底解决,可以部分解决问题这⾥也介绍给⼤家。
//捕获控件的错误
+=newHtmlElementErrorEventHandler(Window_Error);
//对错误进⾏处理
voidWindow_Error(objectsender,HtmlElementErrorEventArgse)
{
//⾃⼰的处理代码
d=true;
}
上⾯的⽅法对于多个框架嵌套等等的情形还是不能很好的解决。
为了彻底解决这个问题,我们借助AxWebBrowser来解决WebBrowser的问题。
我们定义⼀个⾃⼰的类,他的⽗类是WebBrowser,以后使⽤这个类就可以了。在这个类的定义中需要引⽤SHDocVw。
classEWebBrowser:wser
{
owser2Iwb2;
protectedoverridevoidAttachInterfaces(objectnativeActiveXObject)
{
Iwb2=(owser2)nativeActiveXObject;
=true;
Interfaces(nativeActiveXObject);
}
protectedoverridevoidDetachInterfaces()
{
Iwb2=null;
Interfaces();
}
}
从上⾯的代码可以看出EWebBrowser截取了AxWebBrowser接⼝,并利⽤了AxWebBrowser的属性Silent来实现。
更多推荐
当前页面的脚本发生错误
发布评论