我创建了一个包含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
在应用程序启动时或在任何地方,但在导航完成范围之前和之后。