2012-01-17 27 views
1

この投稿(How to intercept the onbeforeunload event in a WebBrowser control?)と同じ問題がWinForms WebBrowserコントロールとonbeforeunload javascriptイベント処理で発生しています。私はonbeforeunloadイベントをIDispatchにキャストし、Invokeメソッドを呼び出すために提示されているのと同じソリューションを試しました。winform webbrowserを使用してonbeforeunloadイベントを処理する方法

時間= -2147352319

を私はIE 6.0を使用してWinXPの上で.NET 3.5をで開発しています。そうするとき、私はこのエラーを取得します。

私はC#コードをここに入れませんでした。なぜなら、上記のリンクされた記事とまったく同じであるからです。

JavaScriptコードは次のとおり

function onBeforeUnload() 
{ 
    if (window.cObject.isTransferred) 
    { 
     event.returnValue = "\nYou are requesting to exit.\n";     
    } 
    else 
    { 
     event.returnValue = "\nYou are DELETING this object!!!\n"; 
    } 
} 
+0

ビットOT、IE6、本当ですか? 10年以上経っており、マイクロソフトでもこれ以上サポートしたくはありません。http://www.ie6countdown.com/をご覧ください。ちょうど推測ですが、別のバージョンのブラウザで同じエラーが発生しますか? – Abel

+0

私はIE6についてのコメントを得ることが分かっていました。残念なことにIE6は、これは私が現在住んでいる世界であり、今年の第3四半期に2回目になるかもしれない。 –

答えて

0

エラーが順番にSCRIPT_E_REPORTEDhere's a how-to do this yourself)に変換され、0x80020101に変換されます。マイクロソフトはconfirmed bugを持っていますが、これはマルチコアまたはマルチプロセッサコンピュータでよく発生すると言われていますが、シングルプロセッサコンピュータでも発生する可能性があります。マイクロソフトは、COMインターフェイスの呼び出しに関係していると説明しています。

これは、最終的にHans Passantの回答に従いますが、このエラーを受け取るyour referred to threadでストーリーをバックアップします。 P/Invoke宣言を変更することによって、彼は問題を解決することができます(答えは質問自体に書かれています)。

ただし、another source suggestsは、スクリプト自体のエラーを意味する可能性があります。その場合は、onScriptErrorを処理してスクリプトのエラーをキャッチする必要があります。

私の提案:(あなたはまだ試していない場合)

  • onScriptError

EDIT用のハンドラを作成

  • 呼ばスレッドで提案されている別のアプローチを試してみてください:OPはいくつかの提案を試みたが、これはJavaScriptエラー(私の2番目の提案)の上にあることが分かった:eventの代わりに、このQuirksmode articleで説明されているように、が使用されているはずです。

  • +0

    私は既に別のアプローチをしていました。私は問題がjavascriptにあるかもしれないと信じています。しかし、私がJavaScriptをエラーにならない場所に変更すると、Invokeの 'result'パラメータが常にnullに戻り、テキストのないメッセージボックスが表示されます。 –

    +0

    さて、私は働いたいくつかのjavascriptを見つけることができました。アベルを助けてくれてありがとう。 –

    +0

    @Edwardこれはおそらく以前使用していたJSがエラーを含んでいたことを意味します。例えば、上記の例では、cObjectが存在しなかったか、何かが存在しませんでした。 – Abel

    関連する問題