0

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

4

1 に答える 1

3

ドキュメントの読み込みが完了したらハンドラーを宣言しているため、イベントが発生することはありません。ドキュメントのレンダリングが完了する前に、Handler を宣言する必要があります。

これを宣言します:

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

アプリケーションの起動時またはどこでも、ナビゲーションが完了する前と範囲外。

于 2013-10-02T11:12:39.823 に答える