C# アプリケーションで IE8 を WebBrowser コントロールとして使用したいと考えています。「互換モード」を無効にして、IE を強制的に標準に準拠させるにはどうすればよいですか (実装されている限り)。
5 に答える
レジストリ キーの手法を使用したくない場合は、次のタグを挿入できます。
<meta http-equiv="X-UA-Compatible" content="IE=8" />
「コンテンツ」属性は、さまざまなモードでのレンダリングを強制します。
あなたが直面している問題はIEBlog: WebBrowser Control Rendering Modes in IE8で説明されていると思います:
Web マスターは、新しいバージョンの IE で適切に表示されるようにサイトを簡単に変更できますが、多くのソフトウェア ベンダーには、更新された内部ページでアプリケーションの新しいバージョンを即座にプッシュするリソースがありません。これらの既存のアプリケーションが正常に機能することを保証するために、 IE8 は既定で IE7 標準モードの WebBrowser コントロールのインスタンス内で実行されているページをレンダリングします。
ここで、ページのコメントが上記が間違っていること、および「 IE8 は、ページの doctype に応じて、デフォルトで IE7 Strict モードまたは Quirks モードの WebBrowser コントロールのインスタンス内で実行されているページをレンダリングする」と述べていることに注意してください。
解決策は次のとおりです。
実行可能ファイルが WebBrowser コントロールのインスタンスをロードするとき、レジストリをスキャンして、実行可能ファイルが IE7 標準または IE8 標準モードを必要としているかどうかを確認します。
...
IE8 標準モードで実行するには、次のレジストリ値を挿入します。
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_NATIVE_DOCUMENT_MODE]
"MyApplication.exe"=dword:13880
これらの両方のインスタンスで、MyApplication.exe は、指定されたモードで WebBrowser コントロールを実行する実行可能ファイルの名前に置き換える必要があります。
WebBrowser
したがって、「プログラムによる」解決策は、特定のアプリケーションのコントロールにIE8標準モードが必要であることを示すキーをレジストリに書き込むことです。
私が最後に聞いたのは、IE8 はデフォルトで標準モードを使用するということでした。最新のベータ版で実際に問題が発生していますか? ユーザーが互換表示ボタンを明示的に押さずに、最初から互換モードでレンダリングしていると確信していますか?
ベータ版以降、レジストリ キーの名前が変更されているなど、いくつかの変更が加えられていることに注意してください。 詳細については、こちらを参照してください。
これには、これをプログラムで実行するための実際のコードがあり、これまでのところ IE11 まで処理します。