9

J'héberge MSIE sous forme de winforms. Malheureusement, il insiste pour fonctionner en mode de compatibilité indépendamment du fait que je lui donne une page qui fonctionne en mode IE8 dans IE autonome. L'effet de cela est que certains contenus qui s'affichent correctement dans MSIE autonome sont complètement mis-alignés et foiré dans le contrôle hébergé.Le contrôle WebBrowser MSIE hébergé dans l'application winforms s'exécute en mode de compatibilité

Outre le type de document, etc, y a-t-il un moyen magique de dire au webbrowser que je veux qu'il rende la page de la même manière que si je l'avais chargé en MSIE autonome?

Je ne souhaite pas utiliser le remplacement de clé de registre (http://blogs.msdn.com/b/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx) car mon formulaire fait partie d'un complément pour une autre application. Je ne veux pas changer le comportement d'IE pour l'application principale et je ne veux pas le changer pour d'autres compléments fonctionnant sous cette application. Je veux seulement que cela fonctionne dans le navigateur hébergé dans mon formulaire, pas à l'échelle de l'application et pas à l'échelle du processus.

Répondre

10

Je ne l'ai pas testé, mais que diriez-vous en utilisant la balise META, ainsi que l'attribut HTTP-EQUIV, pour définir la valeur X-UA-COMPATIBLE-IE=8, qui indique au navigateur Web pour afficher une page dans IE 8 mode standard. Un exemple serait:

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

De cette ligne dans le article suivant, il semble que cela devrait fonctionner.

Par défaut, les applications d'hébergement le contrôle WebBrowser pages basées sur des normes ouvertes en mode IE7 sauf si la page contient une appropriée tête X-UA-Compatible. Vous pouvez modifier cela en ajoutant le nom du fichier exécutable de l'application à la touche de commande FEATURE_BROWSER_EMULATION et en définissant la valeur en conséquence.

+0

Merci. J'ai ajouté la balise Meta X-UA-Compatible. Toujours essayer de confirmer si cela fait l'affaire ... – KristoferA

+0

Quel était le résultat de l'utilisation de la balise META? J'ai pu le tester et ça a marché. – Garett

+0

Jusqu'à présent, j'ai un résultat de test non concluant sur la balise META.Inconclusive car après avoir appliqué la balise, elle a été rendue correctement, mais après avoir changé la méta balise en IE7, elle est restituée correctement, et après l'avoir retirée, elle est restituée correctement. En d'autres termes, après la première série de tests, je n'ai pas pu reproduire le bogue de rendu que je voyais avant d'utiliser la balise META. J'ai besoin de faire d'autres tests mais je n'ai pas encore eu le temps de le faire ... – KristoferA

3

Pour modifier le comportement par défaut du contrôle du navigateur Web en cours d'exécution dans votre application pour correspondre à ce que IE se fait, vous devez définir la FEATURE_BROWSER_EMULATION clé de contrôle des fonctionnalités. Par exemple, vous pouvez reproduire le comportement d'IE8 (permettant aux sites de s'afficher en mode standard IE8) comme suit.

Inside HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl

Créer une nouvelle clé nommée FEATURE_BROWSER_EMULATION

Dans cette clé, ajoutez une nouvelle REG_DWORD avec une valeur avec le nom de l'exécutable de votre application. .: par exemple

"YourApp.exe" = dword 8000 (Hex: 0x1F40) 

d'autres détails sont à: http://blogs.msdn.com/b/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx

+0

Le problème est que mon application est en fait un complément qui s'exécute dans une autre application. L'application principale héberge également MSIE, ainsi que d'autres compléments. En ajoutant la clé de registre de contrôle de fonctionnalité, je vais changer l'application de comportement à grande échelle et introduire un comportement/rendu indésirable. Je veux le changer pour seulement la forme où j'héberge MSIE tout en laissant intact tous les autres navigateurs fonctionnant sous le même exécutable principal. – KristoferA

+2

Malheureusement, ce scénario n'est pas pris en charge. – EricLaw

+0

Ok, merci. Qu'en est-il des futures versions d'Internet Explorer? Agiront-elles également comme si elles étaient une version antérieure lorsqu'elles étaient hébergées dans un autre processus? Je dois dire que je trouve étrange que IE8 ne se comporte pas comme IE8 par défaut, et puis utiliser le truc de registre pour ceux qui veulent qu'il se comporte comme IE7/6/5/etc – KristoferA

Questions connexes