一尘不染

.NET WebBrowser控件中的阻止对话框

c#

我有一个.NET 2.0
WebBrowser控件,该控件用于在没有用户交互的情况下导航某些页面(不要问…长话短说)。由于此应用程序的用户较少,因此我将WebBrowser控件的ScriptErrorsSuppressed属性设置为true,VS
2005状态随附的文档将隐藏所有来自基础ActiveX控件的对话框,不只是脚本错误。”
但是,MSDN文章没有提到这一点。我设法取消了NewWindow事件,该事件可以防止弹出窗口,因此已经解决了这个问题。

任何人都有使用其中一种方法并成功阻止 所有 对话框,脚本错误等的经验吗?

编辑

这不是IE的独立实例,而是Windows Form应用程序上的WebBrowser控件的实例。任何人都具有使用此控件的经验,或者具有基础控件
AxSHDocVW的经验

再次编辑

抱歉,我忘了提及这一点…我试图仅使用OK按钮来阻止 JavaScript alert()
。也许我可以转换为IHTMLDocument2对象并以这种方式访问​​脚本,我已经使用了MSHTML一点,有人知道吗?


阅读 292

收藏
2020-05-19

共1个答案

一尘不染

这绝对是很棘手的,但是如果您使用WebBrowser控件进行任何工作,您都会发现自己在做很多棘手的事情。

这是我所知道的最简单的方法。您需要注入JavaScript以覆盖警报功能…注入此JavaScript函数的过程如下:

window.alert = function () { }

很多方法可以做到这一点
,但这是很有可能的。一种可能性是挂钩DWebBrowserEvents2接口的实现。完成此操作后,您可以将其插入NavigateComplete,DownloadComplete或DocumentComplete(或我们的一些变体)中,然后调用已实现的InjectJavaScript方法来执行对窗口的覆盖。方法。

就像我说的,hacky,但是它可以用:)

如果需要,我可以详细介绍。

2020-05-19