WinFormsアプリでWebBrowserコントロールを使用すると、互換モードに強制されるようです。これを無効にして、スタンドアロンのIEが同じサイトを閲覧するときのマシン上で行うのと同じように動作させるにはどうすればよいですか?
次のレジストリ設定を構成する以外にこれを行う方法はありません。
HKLM\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
または、64ビットWindows上の32ビットアプリの場合:
HKLM\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION`
これらの設定は、WebBrowser
コントロールには表示されません。
詳細については、以下を参照してください。
リンクが切れた場合:
実行可能ファイルの名前と一致するDWORD
値を作成し、この値を次のいずれかに設定します。
7000:標準ベースの
<!DOCTYPE>
ディレクティブを含むページがIE7モードで表示されます。
8000:標準ベースの<!DOCTYPE>
ディレクティブを含むページがIE8モードで表示されます
8888:<!DOCTYPE>
ディレクティブに関係なく、ページは常にIE8モードで表示されます。 (これにより、前述の例外がバイパスされます。)
9000:IE9設定を使用してください!
9999:IE9を強制
例えば:
IE9での私自身の実験から:
9000-IE9のグローバル互換モード設定で設定された互換モードを継承します。すなわち:
9999-グローバルに構成された互換モード設定に関係なく、ホストアプリケーションでIE9を互換モードから強制的に解除します
アプリケーションでは、使用する値を決定するために、基本となるIEバージョンが利用可能であることを検出する必要があります。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Version
または、64ビットWindows上の32ビットアプリの場合:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Version
IE8が登場したときからのこの古い記事もあり、一見の価値があります。
これらの設定は、以下のユーザーごとに構成することもできます。
HKCU\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
それはあなたが尋ねたものではありませんが、あなたがサイトを所有しているなら、あなたはhtmlのheadセクションに以下を加えることができます:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />
参照: http://msdn.Microsoft.com/en-us/library/cc288325(v = vs.85).aspx
問題のスキニーは次のとおりです。ユーザーがIE8で互換表示を有効にすると、すべてのページディレクティブがoverrideされます。したがって、使用しようとするページまたはサーバー変数は、ユーザーがIEでこの機能を有効にしている場合、IEが互換表示に切り替わるのを防ぐことができません。ほとんどの人はページ指示または何らかの秘密ヘッダーサーバー変数はサイトを修正します。いいえ、設定が手動でオーバーライドされた場合、これらのソリューションは機能しません。私は知っている、それはクールではないので、次はユーザー互換表示機能を有効にしていません。
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
レジストリでこれを変更する手順を明確にするには、キーを編集します。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
次に、iexplore.exeという新しいDWORDを追加します。これを行うには、キーを右クリックし、[新規]> [DWORD]を選択します。そのDWORDに9999の10進数値を与えます。これにより、すべてのサイトが互換表示なしでレンダリングされます。互換表示を再度有効にするには、このDWORDを削除します。また、この変更を自動化し、システムでバッチスクリプトを実行する場合は、Michal Mのスクリプトを確認してください。
これは古い質問であることは知っていますが、互換表示を無効にするために、Visual Basic 2010以降のwebbrowserコントロールにヘッダーを挿入する方法があります。
最初に行う必要があるのは、現在のWebページをキャッチして、次のようにheadタグを置き換えることです。
Sub compatible()
' --- simple routine to disable compatible view.
Dim the_url As String
Dim message As String
Dim theReplacement As String
Dim oldMessage As String
the_url = WebBrowser1.Url.OriginalString
WebBrowser1.Navigate(the_url)
message = "<head>" + Chr(13) + Chr(10) + "<meta http-equiv=" + Chr(34) + "X-UA-Compatible" + Chr(34) + "content=" + Chr(34) + "IE=Edge" + Chr(34) + " />" + Chr(13) + Chr(10) + "<base href=" + Chr(34) + the_url + Chr(34) + ">"
oldMessage = WebBrowser1.DocumentText.ToString()
theReplacement = Replace(oldMessage, "<head>", message)
WebBrowser1.DocumentText = theReplacement
End Sub
このコードは、webbrowserコントロールに次の2行を追加します。
<meta http-equiv="X-UA-Compatible"content="IE=Edge" />
<base href="(url of the web page)">