Je veux utiliser IE8 comme un contrôle WebBrowser dans une application C#. Comment puis-je désactiver le "mode quirks" et forcer l'IE à se conformer aux normes (dans la mesure où il est implémenté)?Comment faire pour désactiver par programmation le mode quirks dans le contrôle IE8 WebBrowser?
Répondre
Je pense que le problème que vous rencontrez est décrit dans IEBlog: WebBrowser Control Rendering Modes in IE8:
Alors que les webmasters peuvent facilement modifier leur site pour rendre correctement dans la nouvelle version de IE, de nombreux fournisseurs de logiciels n'ont pas ressources à instantanément pousser de nouvelles versions de leurs applications avec mis à jour pages internes. Afin de garantir que ces applications existantes restent en état de fonctionnement, IE8 affiche les pages exécutées dans instances du contrôle WebBrowser en mode standard IE7 par défaut.
Ici, je dois souligner que les commentaires sur la page disent que ce qui précède est incorrect, et que «IE8 rend les pages en cours d'exécution dans les instances du contrôle WebBrowser dans IE7 mode, strict ou Quirks par défaut, selon le doctype de la page. "
La solution est la suivante:
Lorsqu'un exécutable charge une instance du contrôle WebBrowser il scanne le registre pour vérifier si l'exécutable veut normes IE7 ou IE8 mode standard.
...
Pour exécuter dans les normes IE8 en mode insertion 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 devrait être a remplacé avec le nom de l'exécutable que exécutera WebBrowser cont rols en un mode spécifié.
Il semble donc que la solution « programmatique » est d'écrire une clé dans le registre que vous voulez dire le mode Standards IE8 pour WebBrowser
contrôles dans votre application spécifique.
Le dernier que j'ai entendu était que IE8 utiliserait standards mode by default. Voyez-vous un problème réel avec la dernière version bêta? Etes-vous sûr que c'est le rendu en mode Quirks pour commencer, sans qu'un utilisateur frappe explicitement le compatibility view button?
Je pense que le 'WebBrowser' contrôle et le navigateur autonome se comportent différemment dans ce cas. –
On dirait, oui. Éditera le titre de la question pour le rendre plus spécifique. –
Veuillez noter qu'il y a eu quelques changements depuis la version bêta, les clés de registre ont été renommées, etc. Read more here.
Si vous ne souhaitez pas utiliser le registre technique clé, vous pouvez insérer la balise suivante:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
Les forces d'attribut « contenu » rendu dans différents modes.
Cela a code réel pour faire ce programme et gère jusqu'à IE11 jusqu'à présent:
- 1. Problème CSS pour IE8 exécutant le mode Quirks
- 2. IE8, Flash et le contrôle WinForms WebBrowser
- 3. Désactiver Flash ou d'autres plugins dans le contrôle .NET WebBrowser
- 4. Comment détecter le mode quirks dans Safari 3.0.x?
- 5. Comment désactiver le mode vhdl dans emacs?
- 6. Largeur d'un élément représentant le mode quirks en javascript?
- 7. XSLT "dynamique" pour alimenter le contrôle webbrowser?
- 8. Comment faire pour cliquer par programmation sur la saisie de texte dans WebBrowser en utilisant C#
- 9. Désactiver le menu contextuel dans le contrôle Internet Explorer
- 10. Windows XP - Activer/désactiver le son par programmation en mode Python
- 11. désactiver le contrôle.
- 12. Contenu généré par CSS dans IE8 dans .NET
- 13. Comment désactiver la fenêtre "Alerte de sécurité" dans le contrôle Webbrowser
- 14. webbrowser désactiver le débogage de script dans Visual Basic 6
- 15. superposition pour le contrôle WebBrowser dans l'application WPF?
- 16. wpf: modifier la taille de police pour le contrôle WebBrowser
- 17. Comment faire pour que le contrôle C# wpf webbrowser charge la version mobile des sites Web
- 18. Ajout de données simulées pour le contrôle WebBrowser
- 19. Empêcher le contrôle WebBrowser d'avaler des exceptions
- 20. Comment faire défiler jusqu'à un emplacement de texte dans le contrôle WebBrowser en C#?
- 21. Désactiver le mode de remplissage automatique en mode noweb
- 22. Désactiver le périphérique dans le gestionnaire de périphériques (Vista x64) par programmation
- 23. Activer le mode avion par programme?
- 24. C# Accédez aux ancres dans le contrôle WebBrowser
- 25. Le contrôle WebBrowser échoue sur Vista
- 26. Est-il possible d'utiliser ServicePointManager avec le contrôle Webbrowser?
- 27. webbrowser iframes ouvert dans le navigateur par défaut
- 28. Comment faire pour empêcher le débogage juste-à-temps montrant quand une erreur de script se produit dans le contrôle WebBrowser
- 29. Chargement du texte de la mémoire dans le contrôle WebBrowser
- 30. Comment envoyer un formulaire par programmation sans bouton de soumission dans WebBrowser
Il serait préférable qu'il y ait une propriété à définir dans le contrôle du navigateur - ce serait plus facile si l'utilisateur n'avait pas les permissions de registre, bien que cela soit moins problématique sous HKEY_CURRENT_USER (la clé fonctionne également dans le point équivalent sous HKEY_LOCAL_MACHINE). – Anthony
FYI, 'FEATURE_NATIVE_DOCUMENT_MODE' a été dépassé par' FEATURE_BROWSER_EMULATION'. –