Comment désactiver par programmation le mode quirks dans le contrôle IE8 WebBrowser?
Question
Je souhaite utiliser IE8 en tant que contrôle WebBrowser dans une application C #. Comment puis-je désactiver & Quot; le mode quirks & Quot; et forcer IE à se conformer aux normes (dans la mesure où il est mis en œuvre)?
La solution
Je pense que le problème auquel vous êtes confronté est décrit dans IEBlog: Modes de rendu du contrôle WebBrowser dans IE8 :
Alors que les webmasters peuvent facilement modifier leur site pour rendre correctement dans le nouvelle version d'IE, nombreux logiciels les vendeurs n'ont pas les ressources pour pousser instantanément de nouvelles versions de leurs applications à jour pages internes. Afin de garantir que ces existants les applications restent en ordre de marche, IE8 rend les pages en cours d'exécution dans instances du contrôle WebBrowser dans Mode Normes IE7 par défaut.
Il convient de noter ici que les commentaires sur la page indiquent que le commentaire ci-dessus est incorrect et que & "; IE8 restitue les pages exécutées dans des instances du contrôle WebBrowser en mode IE7 Strict OU en mode Quirks par défaut , en fonction du doctype de la page. "
La solution est la suivante:
Quand un exécutable charge une instance du contrôle WebBrowser, il analyse le registre pour vérifier si le l'exécutable veut les normes IE7 ou IE8 Mode standard.
...
Pour exécuter l'insertion en mode Normes IE8 la valeur de registre suivante:
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_NATIVE_DOCUMENT_MODE]
"MyApplication.exe"=dword:13880
Dans ces deux cas, MyApplication.exe doit être remplacé avec le nom de l'exécutable exécutera des contrôles WebBrowser dans un mode spécifié.
Cela ressemble donc au " programmatique " La solution consiste à écrire dans le registre une clé indiquant que vous souhaitez utiliser le mode Normes IE8 pour les WebBrowser
contrôles de votre application spécifique.
Autres conseils
Si vous ne souhaitez pas utiliser la technique de la clé de registre, vous pouvez insérer la balise suivante:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
Le " contenu " attribut des forces de rendu dans différents modes.
La dernière fois que j'ai entendu parler était que IE8 utiliserait mode standard par défaut . Voyez-vous un problème réel avec la dernière version bêta? Etes-vous sûr de commencer par le rendu en mode quirks, sans qu'un utilisateur ne clique explicitement sur bouton de visualisation de la compatibilité ?
Veuillez noter que quelques modifications ont été apportées depuis la version bêta, les clés de registre ont été renommées, etc. Plus d'informations ici .
Ceci a le code réel pour le faire par programme et gère jusqu'à IE11 jusqu'à présent: