82 votes

En ce qui concerne le contrôle WebBrowser d’IE9

<p>J’ai récemment mis à jour pour IE9 bêta. Maintenant, dans mon .net (3.5) application WinForm je veux utiliser <code></code> contrôle. Donc ma question est, si le <code></code> contrôle expose toutes les propriétés et les fonctions de IE9 ? Ma préoccupation est, je veux restituer des graphiques SVG là-dessus.</p>

124voto

mikel Points 10793

Contrôle WebBrowser utiliser n'importe quelle version de IE que vous avez installé, mais pour des raisons de compatibilité, il rendra pages dans IE7 en mode standard par défaut.

Si vous voulez prendre avantage de la nouvelle IE9 fonctionnalités, vous devez ajouter la balise meta <meta http-equiv="X-UA-Compatible" content="IE=9" > à l'intérieur de l' <head> balise de votre page HTML.

Cette balise meta doivent être ajoutés avant tout des liens vers fichiers CSS, JavaScript, etc qui sont aussi dans votre <head> fonctionne correctement (seulement les autres <meta> de tags ou de l' <title> balise peut venir avant).

Une alternative est d'ajouter une entrée de registre:

HKLM > SOFTWARE > Microsoft > Internet Explorer > > > FeatureControl > FEATURE_BROWSER_EMULATION

Et d'y ajouter "myApplicationName.exe' avec la valeur '9000' pour forcer le contrôle WebBrowser pour afficher les pages dans IE9 mode. Bien qu'il existe d'autres valeurs que vous pouvez utiliser trop trop, remarque que ces docs ne sont pas tout à fait juste car il ne semble pas possible d'obtenir une page de rendu de IE 8 mode quelle que soit la valeur que vous utilisez.

L'ajout de la clé de registre pour le même chemin dans HKCU au lieu de HKLM également, ce travail est utile que l'écriture pour HKLM requiert des privilèges d'administrateur où, comme HKCU ne le fait pas.

81voto

whitehawk Points 1358

IE9 "version" du contrôle WebBrowser, à l'instar de la version IE8, est en réalité plusieurs navigateurs. Contrairement à la version IE8, vous avez un peu plus de contrôle sur le mode de rendu à l'intérieur de la page en modifiant le doctype. Bien sûr, pour changer le mode du navigateur, vous devez définir votre base de registre comme la précédente réponse. Voici un fichier reg fragment de FEATURE_BROWSER_EMULATION:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"contoso.exe"=dword:00002328

Voici l'ensemble des codes:

  • 9999 (0x270F) - Internet Explorer 9. Les pages web sont affichées dans IE9 Normes de la mode, quel que soit le !DOCTYPE directive.
  • 9000 (0x2328) - Internet Explorer 9. Les pages web contenant des normes de base !DOCTYPE les directives sont affichés dans IE9 mode.
  • 8888 (0x22B8) -les Pages web sont affiché dans IE8 Normes de la mode, quel que soit le !DOCTYPE directive.
  • 8000 (0x1F40) - les Pages web contenant des basé sur les normes !DOCTYPE directives sont affichés dans IE8 mode.
  • 7000 (0x1B58) - les Pages web contenant des basé sur les normes !DOCTYPE directives sont affichés dans IE7 en mode standard.

Le plein de docs:

http://msdn.microsoft.com/en-us/library/ee330730%28VS.85%29.aspx#browser_emulation

23voto

Geoff Points 161

Dieu merci, j'ai trouvé ceci. Ce qui suit est extrêmement important:

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

Sans cela, aucun des rapports que j'avais été en générant aurait du poste de travail-IE9 installer malgré le fait d'avoir travaillé dans IE8. Ils affichent correctement dans un contrôle de navigateur web, mais il y aurait des lettres manquantes, pillée espace blanc, etc, quand j'ai appelé .Print(). Ils étaient juste en HTML de base qui devraient être capables d'être rendus, même en Mosaïque. heh ne sais Pas pourquoi le mode de compatibilité IE7 était d'aller détraque. Notamment, vous pourriez .Print() de la même page 5 fois et ont-il manque des lettres différentes à chaque fois. Il serait même se poursuivre dans le PDF de sortie, de sorte qu'il est certainement le navigateur.

16voto

jamestks Points 101

Une note à propos de Windows 64 bits qui semble faire trébucher quelques personnes. Si votre application fonctionne sous Windows 64 bits, vous devrez probablement définir DWORD sous [HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION].

15voto

user3175394 Points 31

Juste pour être complet...

Vous devez ajouter une entrée de registre:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

Pour les 32 bits de l'OS

OU**

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

Pour les OS 64 bits

et cette entrée doit être une valeur DWORD, avec le nom étant le nom de votre exécutable, qui héberge le contrôle Webbrowser; c'est à dire:

myappname.exe (N'UTILISEZ PAS "Contoso.exe" comme dans la MSDN web page...c'est juste un espace réservé de nom)

Puis donnez-lui une valeur DWORD, selon le tableau:

http://msdn.microsoft.com/en-us/library/ee330730(v=vs. 85).aspx#browser_emulation

J'ai changé pour 11001 décimal ou 0x2AF9 hex --- (IE 11 ÉMULATION)

POURQUOI ce n'est pas la valeur par DÉFAUT (si vous avez IE 11 installé, ou quelle que soit la version), au lieu de IE 7 ou 8, je ne le saurai jamais...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: