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 ハンドラーをアタッチするまで待ちます。ただし、これは期待どおりに機能しません。ハンドラーが登録されないようです。(フロー全体でコンソール ロギングを実行すると、ドキュメントが完了する前にスクリプト エラーがスローされることがわかります。これは、ナビゲート イベント中に発生します。)
スクリプト エラー ウィンドウで [OK] をクリックすると、documentCompleted イベントが発生します。誰か提案はありますか?ハンドラーをナビゲーション、ナビゲート、ドキュメントの完了イベントにアタッチしようとしました。また、ここで注意が必要なのは、ハンドラーを追加する前に、いつでもドキュメントを完全にロードする必要があり、それが機能しないことです。私は4.0、Windows 7 ProfessionalでVS2012を使用しています。
VB.NET と C# の両方でこれを試しましたが、どちらも同じ問題を抱えています。
ここのサイトにアクセスできますhttp://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.scripterrorssuppressed.aspx