在 WebBrowser 控件中禁用警报窗口

Posted

技术标签:

【中文标题】在 WebBrowser 控件中禁用警报窗口【英文标题】:Disabling alert window in WebBrowser control 【发布时间】:2011-07-25 01:00:45 【问题描述】:

我正在使用 VS 2005 和 WebBrowser 控件。当我使用组件导航到指定页面时,我收到场景错误,例如“在此页面上 javascript 场景错误”和两个按钮:是或否执行场景。如何阻止警报窗口并在没有此消息的情况下继续浏览?

【问题讨论】:

是否要禁用脚本错误?还是想禁用确认框? 我想禁用确认框。 我认为不可能。 :( 这是IE的设置。您可以在浏览器选项中自行更改 【参考方案1】:

试试

WebBrowser1.ScriptErrorsSuppressed = true;

【讨论】:

【参考方案2】:

试试这个

htmlElement head = WebBrowser1.Document.GetElementsByTagName("head")[0];
HtmlElement scriptEl = WebBrowser1.Document.CreateElement("script");
IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
string alertBlocker = @"window.alert = function ()  ; window.confirm=function ()  ;";
element.text = alertBlocker;
head.AppendChild(scriptEl);
WebBrowser1.ScriptErrorsSuppressed = true;

来源: http://moshez.blogspot.co.il/2013/08/c-disable-alert-box-javascript-in-c.html

【讨论】:

很好,很好。我不知道为什么以前的答案被接受并被高度评价?这是值得接受的。 Farzin 所说的在一定程度上是正确的。除了; OP 并没有要求抑制警报。他要求抑制 JS 错误弹出窗口。 Moshes 修复适用于警报。【参考方案3】:
    Private Sub WebBrowser1_StatusTextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles WebBrowser1.StatusTextChanged
        On Error Resume Next
        Dim head As HtmlElement = WebBrowser1.Document.GetElementsByTagName("head")(0)
        Dim script As HtmlElement
        script = WebBrowser1.Document.CreateElement("script")
        script.SetAttribute("type", "text/javascript")
        Dim alertBlocker As String = "window.alert = function ()  ; window.confirm=function ()  ; "
        script.SetAttribute("text", alertBlocker)
        head.AppendChild(script)
    End Sub

【讨论】:

VB C#... 土豆土豆。反正都是.NET :)

以上是关于在 WebBrowser 控件中禁用警报窗口的主要内容,如果未能解决你的问题,请参考以下文章

在 WebBrowser 控件中禁用 JavaScript 错误

在WebBrowser控件中禁用脚本?

如何禁用 .NET WebBrowser 控件中的缓存?

如何禁用 WPF WebBrowser 控件的点击噪音?

wpf webBrowser 禁用超链接

MFC WebBrowser判断网页加载完成