0

いつもの金曜日の午後のバグに出くわしました...

WebBrowser コントロールを使用する .NET 2.0 WinForms アプリがあります (最新の IE 7 を搭載した XP タブレット版にデプロイされています)。ページのある時点で、JavaScript を使用して を非表示にしdiv、値を設定しています。textboxその時点で、操作は機能していますが (テキストが に表示されますtextbox)、ウィンドウ全体がフリーズしています。ウィンドウの最小化/最大化が応答しないなど: Windows メッセージが処理されていないようです。

このウィンドウの外側 (タスクバー、開いている別のウィンドウ) をクリックすると、以前はフリーズしていたウィンドウが正しく機能するようになりました。同じ操作をやり直すと、再びロックが発生します。これは体系的であり、この特定のマシンでいつでも再現できます。

さまざまなマシンを使用して内部で再現することはできません。

同じマシンで、同じページに移動して同じ操作を IE 7 で直接実行すると、すべて正常に動作します... 非常にイライラします。

この動作の原因について何か考えはありますか? 何をチェックしますか?ページによって JavaScript エラーがスローされないようです。

アイデアやポインタをありがとう

4

1 に答える 1

1

Windows フォーム用の .NET 2.0 WebBrowser にはバグがあります。AccessViolationExceptions のクラッシュを引き起こすいくつかの相互運用エラーを含め、実装で非常に多くのさまざまなバグに遭遇したため、組み込み IE から離れて Mozilla を使用するようになりました。

悲観論者になるのは嫌いですが、組み込み可能な IE コントロールはただのゴミです。

Mono.WebBrowserコントロールを調べることができます。同じマネージ プログラミング インターフェイスですが、Firefox の Gecko エンジンで実装され、Chrome と Safari の WebKit エンジンで代替実装されています。

もう 1 つの方法は、.NET 2.0 WebBrowser ラッパーをスキップして、mshtml インターフェイス経由で ActiveX IE コントロールを直接使用することです。残念ながら、生成された mshtml ラッパーにはいくつかのバグさえあります。

結論: Mono.WebBrowserをお勧めします。

于 2009-04-24T19:49:52.590 に答える