web-dev-qa-db-ja.com

IE8 WebBrowserコントロールでプログラムで癖モードをオフにする方法は?

IE8をC#アプリケーションのWebBrowserコントロールとして使用したいと思います。 「quirksmode」を無効にして、IEを標準に準拠させる(実装されている限り))にはどうすればよいですか?

20
Tony the Pony

あなたが直面している問題は IEBlog:IE8のWebBrowser Control Rendering Modes :で説明されていると思います。

ウェブマスターは新しいバージョンのIEで適切にレンダリングするようにサイトを簡単に変更できますが、多くのソフトウェアベンダーには、更新された内部ページを使用してアプリケーションの新しいバージョンを即座にプッシュするためのリソースがありません。これらの既存のアプリケーションが正常に機能するようにするために、IE8は、デフォルトでIE7標準モードのWebBrowserコントロールのインスタンス内で実行されているページをレンダリングします。

ここで、ページのコメントには上記が正しくないと書かれていることに注意してください。「IE8は、IE7厳密モードOR QuirksモードのWebBrowserコントロールのインスタンス内で実行されているページをレンダリングします。デフォルト、ページのDoctypeによって異なります。」

解決策は次のとおりです。

実行可能ファイルが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標準モードが必要であることを示すキーをレジストリに書き込むことのように思えます。

14

レジストリキーの手法を使用したくない場合は、次のタグを挿入できます。

<meta http-equiv="X-UA-Compatible" content="IE=8" />

「content」属性は、さまざまなモードでのレンダリングを強制します。

25
Elijah

私が最後に聞いたのは、IE8は デフォルトでは標準モード を使用するということでした。最新のベータ版で実際に問題が発生していますか?ユーザーが明示的に 互換表示ボタン を押さなくても、最初は癖モードでレンダリングされていると思いますか?

4
Jon Skeet

ベータ版以降、いくつかの変更があったことに注意してください。レジストリキーの名前が変更されました。 詳細はこちら

3
Sire

これには、プログラムでこれを行うための実際のコードがあり、これまでのところIE11まで処理します。

C#webbrowser Ajax呼び出し

0
Dirk Bester