网页右下角弹出广告-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来实现。

更多推荐

当前页面的脚本发生错误