web-dev-qa-db-fra.com

Le composant Navigateur Web est IE7 et non IE8? Comment changer ça?

J'ai donc une application de formulaire C # qui utilise le composant de navigateur Web. Apparemment Response.Write (Request.Browser.Version.ToString ()); renvoie "7.0" lorsque je visite ma page de test à partir du composant de navigateur Web.

Comment puis-je faire en sorte que ce composant de navigateur Web utilise IE8?

37
Chris

Il semble que vous devez jouer avec le registre selon cet article: -

http://blogs.msdn.com/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx

Pour exécuter un contrôle WebBrowser en mode standard IE8, utilisez la nouvelle valeur suivante dans le Registre:

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword 8000 (Hex: 0x1F40)

Pour exécuter en mode standard IE7, utilisez la valeur de Registre suivante:

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword 7000 (Hex: 0x1B58)

Pour IE8 RTM, nous avons ajouté une nouvelle valeur de mode standard IE8 "forcé". Lorsqu'une application opte pour ce mode, le contrôle du navigateur Web utilise strictement la chaîne de l'agent utilisateur IE8 et le mode d'émulation du navigateur. Il ignorera également les fonctionnalités de secours telles que la liste d'affichage de compatibilité intégrée et la liste d'affichage de compatibilité générée par l'utilisateur lors du chargement des pages. Pour exécuter en mode standard IE8 "forcé", utilisez la valeur de registre suivante:

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword 8888 (Hex: 0x22B8)

Dans tous ces exemples, "MyApplication.exe" fait référence au nom de votre application.

34
Plip

La réponse peut arriver tard et peut ne pas s'appliquer à votre cas, mais selon la réponse de Ron à la question WPF .net4 webBrowser et Internet Explorer 8 , vous pouvez également contrôler le navigateur Web si vous avez le contrôle sur le page servie:

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

Bien que cela ne change apparemment pas l'agent utilisateur, il semble que des conditions comme

<!--[if lt IE 8]>

et CSS border-radius sont évalués correctement, ce qui indique que le moteur le plus récent (IE 9 sur mon système) est effectivement utilisé malgré le fait que l'agent utilisateur ait signalé MSIE 7.0.

28
Archimedix

J'ai suivi cela et cela ne fonctionnait pas jusqu'à ce que je réalise que c'était parce que je déboguais en studio visuel.

En plus de définir le registre de votre application:

Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", 
  System.AppDomain.CurrentDomain.FriendlyName, value);

Vous devez également le définir pour votre application de débogage (hébergée par Visual Studio):

Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION",
  System.AppDomain.CurrentDomain.FriendlyName.Replace(".exe",".vshost.exe"), value);
16
Pascal Ganaye