1

私は webbrowsercontrol を持つアプリケーションを持っています。この webbrowsercontrol は、IE9 と互換性のないページをロードしようとしています。(他の誰かが作成したため、これを変更することはできません) デフォルトでは、VB.NET 2010 の Web ブラウザー コントロールは IE9 レンダリング エンジンを使用し、ある種の互換モードで実行できます。残念ながら、互換モードでもページは機能しません。本物の IE7 または IE8 レンダリング エンジンで Web ブラウザ コントロールを使用する方法はありますか? ありがとう

アップデート

問題の説明: JAVA アプレットを含むページがあります。この Java アプレットには、テキストボックスで開くポップアップがあります。このテキストボックスは、閉じられるまで強制的に前面に表示されます。これは IE7 と IE8 で正常に動作します。ただし、IE9 では、ブラウザ ウィンドウを移動するか、他のアプリケーションにアクセスすると、このメッセージ ボックスが後ろにジャンプします。もうクリックできません。私の Web ブラウザー (エミュレーションを実行している IE9) が機能しません。IE7またはIE8をエミュレートしても、IE9のままであるかのように動作します。

4

1 に答える 1

3

本物の IE7 または IE8 レンダリング エンジンで Web ブラウザ コントロールを使用する方法はありますか?

はい。ただし、コンピューターにインストールされている Internet Explorer のバージョンをバージョン 7 または 8 にダウングレードする必要があります。これは、使いやすいインストール エクスペリエンスにはなりません。

問題は、WebBrowser コントロールがコンピューターにインストールされている IE のバージョンを常に使用することです。これは、IE 自体が使用するものと同じネイティブ ライブラリ shdocvw.dll にレンダリングを委任するだけだからです。あなたの場合、それは IE 9 のようです。ただし、デフォルトでは、IE 7 互換モードでも実行されます。これはレジストリを編集することで変更できますが、レンダリング エンジンのバージョンは変更できません。

残念ながら、1 台のコンピューターで複数のバージョンの IE を実行する構成はサポートされていません。テスト目的で実行することはできます が、追加のソフトウェアが必要であり、バージョンが一緒にうまく動作しません。一方がスタンドアロンの IE ブラウザーをサポートし、もう一方が .NET WebBrowser コントロールを駆動するには、確かに十分ではありません。

IE 9 で正しく動作するようにコードを修正することが最善の選択肢です。IE 9 は、Microsoft が標準準拠のブラウザーに向けてゆっくりと前進していることを表しています。IE 9 にはまだいくつかの癖がありますが、サポートする価値はあります。Web サイトのコードは「別の誰か」によって管理されているとおっしゃっていましたが、サポート リクエストを提出することをお勧めします。そのコードにはバグがあり、修正する必要があります。あなた (または彼ら) がこれについて助けが必要な場合は、スタック オーバーフローでコード忍者のWeb 標準の専門家に尋ねることができます。

または、WebBrowser コントロールを別のコントロールに置き換えることを検討することもできます。.NET Framework には、他の一般的なブラウザーで使用されるレンダリング エンジンをラップする優れたものがいくつかあります。例えば:

  • WebKit .NETは、Google Chrome と Apple Safari で使用される WebKit エンジンのラッパーです。
  • GeckoFXは、Mozilla Firefox で使用される Gecko レンダリング エンジンのラッパーです。
  • MozNetは Gecko の代替ラッパーです。

残念ながら、あなたが扱っているコードがひどく書かれており、IE 9 の標準への準拠に対する脆弱な試みがそれを屈服させている場合、さらに標準に準拠した別のブラウザーのレンダリング エンジンに切り替えても、大きな成功を収めることはまずありません。

于 2013-03-14T22:23:15.117 に答える