0

我创建了一个包含 webbrowser 控件的 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 事件。有没有人有什么建议?我试图在导航、导航、文档完成事件中附加处理程序。此外,这里棘手的部分是文档必须在我什至可以添加处理程序之前完全加载,之前的任何时候它都不起作用。我在 Windows 7 Professional 上使用4.0VS2012 。

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

您可以在此处访问此站点http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.scripterrorssuppressed.aspx

4

1 回答 1

3

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

声明:

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

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

于 2013-10-02T11:12:39.823 回答