我创建了一个包含Web浏览器控件的Windows窗体应用程序。使用以下代码时,我遇到了显示脚本错误的问题。

我想捕获脚本错误,排除它们并将它们记录到文件中。下面是msdn文档告诉我的确切代码。

    ' Hides script errors without hiding other dialog boxes.
Private Sub SuppressScriptErrorsOnly(ByVal browser As WebBrowser)

    ' Ensure that ScriptErrorsSuppressed is set to false.
    browser.ScriptErrorsSuppressed = False

    ' Handle DocumentCompleted to gain access to the Document object.
    AddHandler browser.DocumentCompleted, _
        AddressOf browser_DocumentCompleted

End Sub

Private Sub browser_DocumentCompleted(ByVal sender As Object, _
    ByVal e As WebBrowserDocumentCompletedEventArgs)

    AddHandler CType(sender, WebBrowser).Document.Window.Error, _
        AddressOf Window_Error

End Sub

Private Sub Window_Error(ByVal sender As Object, _
    ByVal e As HtmlElementErrorEventArgs)

    ' Ignore the error and suppress the error dialog box.
    e.Handled = True

End Sub


我等到documentCompleted事件附加window.error处理程序。但是,这不能按预期方式工作,就像处理程序从未注册过一样。 (在整个流程中进行控制台日志记录时,发现在文档完成之前会引发脚本错误,这是在导航事件期间发生的。)

在脚本错误窗口中单击“确定”后,它将触发documentCompleted事件。有没有人有什么建议?我试图将处理程序附加到导航,导航,文档Completed事件中。另外,这里最棘手的部分是,在我什至可以添加处理程序之前,必须在之前的任何时候将文件完全加载,并且该文件不起作用。
我在Windows 7 Professional上使用4.0,VS2012。

我已经在VB.NET和C#中都尝试过,但是都遇到了同样的问题。

您可以在这里http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.scripterrorssuppressed.aspx转到此站点。

最佳答案

您将在文档完成加载后声明处理程序,因此该事件将永远不会触发。您必须在文档完成渲染之前声明Handler。

声明:

 AddHandler CType(sender, WebBrowser).Document.Window.Error, _
        AddressOf Window_Error


在应用程序启动时或在任何地方,但在导航完成范围之前和之后。

09-26 13:44