Question

J'ai récemment amélioré à IE9 bêta. Maintenant, dans mon application .NET Winform (3.5) Je veux utiliser le contrôle de WebBrowser.

Alors, ma question est, si le contrôle WebBrowser présentera toutes les propriétés et les fonctions de IE9?

Je crains, je veux rendre quelques graphiques SVG là-dessus.

Était-ce utile?

La solution

La « version » IE9 du contrôle WebBrowser, comme la version IE8, est en fait plusieurs navigateurs dans un. Contrairement à la version IE8, vous disposez d'un peu plus de contrôle sur le mode de rendu dans la page en changeant le type de document. Bien sûr, pour changer le mode de navigateur que vous devez définir votre base de registre comme la réponse précédente. Voici un fragment de fichier reg pour 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 complet de codes:

  • 9999 (0x270F) - Internet Explorer 9. Pages web sont affichés dans IE9 mode standard, quelle que soit la ! DOCTYPE directive.
  • 9000 (0x2328) - Internet Explorer 9. pages internet contenant basée sur les standards DOCTYPE directives sont affichées en mode IE9.
  • 8888 (0x22B8) sont -Webpages affiché en mode Standards IE8, quelle que soit la directive! DOCTYPE.
  • 8000 (0x1F40) - pages Web contenant fondées sur des normes! directives DOCTYPE sont affichés en mode IE8.
  • 7000 (0x1B58) - pages Web contenant fondées sur des normes! directives DOCTYPE sont affichés en mode IE7 normes.

Les documents complets:

http://msdn.microsoft. com / fr-fr / bibliothèque / ee330730% 28VS.85% 29.aspx # browser_emulation

Autres conseils

contrôle WebBrowser utilisera quelle que soit la version d'Internet Explorer que vous avez installé, mais pour des raisons de compatibilité, il sera rendu des pages en mode standard IE7 par défaut.

Si vous voulez profiter de nouvelles fonctionnalités IE9, vous devez ajouter la balise meta <meta http-equiv="X-UA-Compatible" content="IE=9" > dans la balise <head> de votre page HTML.

Cette balise meta doit être ajouté avant tout lien vers CSS, fichiers JavaScript etc qui sont aussi dans votre <head> fonctionne correctement si (que d'autres balises <meta> ou la balise <title> peuvent venir avant lui).

Une autre solution consiste à ajouter une entrée de Registre:

  

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

Et il ajouter « myApplicationName.exe » avec la valeur « 9000 » pour forcer le contrôle WebBrowser pour afficher les pages en mode IE9. Bien qu'il existe d'autres valeurs que vous pouvez utiliser aussi aussi, notez que ces documents ne sont pas tout à fait exact, car il ne semble pas possible d'obtenir une page pour rendre en mode IE 8 quelle que soit la valeur que vous utilisez.

Ajout de la clé de Registre sur le même chemin dans HKCU au lieu de HKLM travaillera également - ce qui est utile que l'écriture à HKLM exige des privilèges d'administrateur alors que HKCU ne fonctionne pas.

Heureusement que j'ai trouvé cela. Ce qui suit est extrêmement important:

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

Sans cela, aucun des rapports que je générons travaillerait après IE9 installer malgré avoir beaucoup travaillé dans IE8. Ils apparaissent correctement dans un contrôle du navigateur Web, mais il y aurait des lettres manquantes, Jacked l'espace blanc, etc, quand j'ai appelé .Imprimer (). Ils étaient tout simplement HTML de base qui devrait pouvoir être rendu même en mosaïque. heh Je ne sais pas pourquoi le mode de compatibilité IE7 a été détraqué. En particulier, vous pouvez .print () la même page 5 fois et avoir des données manquent des lettres différentes à chaque fois. Il effectuerait même plus en sortie PDF, il est certainement le navigateur.

Une note sur 64 bits de Windows qui semble trébucher quelques personnes. Si votre application est en cours d'exécution sous Windows 64bit, vous avez probablement de régler le DWORD sous [HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION] au lieu.

Pour être complet ...

Pour 32 bits OS vous devez ajouter une entrée de Registre à:

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

******* ******* OU

Pour OS 64 bits, vous devez ajouter une entrée de Registre:

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

Cette entrée doit être un DWORD, le nom étant le nom de l'exécutable, qui héberge le contrôle WebBrowser; i.e.:.

myappname.exe (NE PAS UTILISER "Contoso.exe" comme dans la page Web MSDN ... il est juste un nom fictif)

Ensuite, donnez une valeur de DWORD, selon le tableau:

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

J'ai changé à 11001 décimal ou hexadécimal 0x2AF9 --- (IE 11 Emulation) puisque ce n'est pas la valeur par défaut. (Si vous avez IE 11 installé - ou quelle que soit la version)

Cet article MSDN contient des notes sur plusieurs autres modifications du Registre qui affectent le comportement du navigateur Web Internet Explorer.

Je sais que ce fil est vieux et il y a déjà des réponses complètes.

Juste au cas où vous ne savez pas ceci:

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

Vous n'avez pas hardcode numéro de version IE comme

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

Je suis totalement d'accord avec la solution proposée, mais je pense qu'une petite précision est importante, je pense, pourrait être nécessaire.

Pour chaque processus (lire aussi: vshost.exe, yourWinformApplication.exe.svchost, ou le nom de votre application.exe) qui devra ajouter un DWORD avec la valeur fournie, dans mon cas, je laisse 9000 (en décimal ) dans le nom de l'application et le bon fonctionnement et un script sans erreur.

l'erreur la plus commune est de croire qu'il est nécessaire d'ajouter « contoso.exe » TEL QUEL et pense que tout le travail!

Oui, le contrôle WebBrowser utilise quelle que soit la version d'Internet Explorer que vous avez installé. Cela signifie bien sûr que si vous exécutez votre application sur une machine avec IE 8 puis les IE 9 fonctionnalités dont vous dépendez ne seront pas disponibles.

Je suis venu à cette solution et il n'a pas fonctionné pour moi! Parce que j'utilisais 64bit je devais remplacer le Registre:

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

Au lieu de celui que tout le monde parle:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]

J'ai aimé le code (C #) dans les éléments suivants qui définit les paramètres de registre pour votre application. Je ne sais pas si elle coupera après l'installation que si les autorisations sont nécessaires. Pour moi, il a résolu un problème avec WebSocket ne pas être disponible à l'intérieur d'un contrôle WebBrowser dans WPF.

C # webbrowser Ajax appel

J'ai eu le même problème, et les réponses de registre ici ne fonctionne pas.

J'ai eu un contrôle de navigateur dans la nouvelle version de mon programme qui fonctionne bien sur XP, échoué dans Windows 7 (64 bits). L'ancienne version a travaillé sur XP et Windows 7.

La page Web affichée dans le navigateur utilise une étrange plug-in pour montrer les cartes anciennes SVG (je pense que son applet Java).

Transforme le problème est lié à la protection DEP dans Windows 7.

Les anciennes versions de dotnet 2 n'a pas fixé le DEP requis drapeau dans l'exe, mais de dotnet 2, SP 1 partir il ne (eh oui, le comportement de la compilation et le comportement où l'exécution d'exe changé en fonction de la machine que vous compilez sur , agréable ...).

Il est documenté sur un blog MSDN NXCOMPAT et le compilateur C # . Pour citer:. Ce sera sans doute surprendre quelques développeurs ... télécharger un service pack-cadre, recompiler, exécutez votre application, et vous obtenez maintenant IP_ON_HEAP exceptions

Ajout ce qui suit à la construction de poste dans Visual Studio, se retourne DEP off pour l'exe, et tout fonctionne comme prévu:

all "$(DevEnvDir)..\tools\vsvars32.bat"
editbin.exe /NXCOMPAT:NO "$(TargetPath)"

En ce qui concerne la réponse acceptée de Whitehawk. Je suis juste essayer d'ajouter de l'expérience d'un mains bits. A été juste essayer d'ajouter des commentaires, mais se plaint il est donc trop longtemps.

En fait, sans IE 9 installé, le FEATURE_BROWSER_EMULATION commutateur de registre ne fonctionne pas du tout.

Par exemple, ma propre expérience aujourd'hui, je tentais d'obtenir le .net webcontrol à travailler avec le mode IE10 parce que l'un html je suis en train de rendre ne fonctionnera pas avec .netControl sous VS2012, et même ne fonctionne pas lorsque je charge le html à IE8 directement, encore ne rend pas css correctement (même après que je dis autoriser le contenu bloqué). Mais je l'ai testé la même html ok avec IE10 sur la machine victoire 8 d'un ami. Voilà pourquoi je suis en train de régler le .net WEBCONTROL en mode IE 10 mais juste échoue après ...

Maintenant, je compris cela est bcos ma machine victoire 7 seulement ont IE8 installé, donc quelle que soit quelle valeur je mettre au commutateur FEATURE_BROWSER_EMULATION (valeur à IE9, IE10 IE11), juste ne fonctionnera pas tout!

Alors j'ai téléchargé et installé IE 10 sur ma machine victoire 7. Néanmoins, il ne fonctionnera pas, alors j'ajouté le FEATURE_BROWSER_EMULATION, il a commencé à travailler!

Aussi je remarqué que quelle que soit la valeur que je mets, même mis à la valeur 0 par défaut, le WEBCONTROL utilise toujours le mode IE 10, qui fonctionne toujours pour moi.

Donc, pour résumer, Si vous avez IE X installé, mais vous voulez que votre .Net WEBCONTROL à travailler sous IE (X + N) N> 0 Modo, deux choses vous devez faire:

  1. Aller sur le site MS & télécharger et installer IE (X + N) sur votre machine, vous devrez redémarrer après l'installation.

  2. appliquer la réponse Whitehawk.

En gros: Pour contrôler la valeur de cette fonctionnalité en utilisant le registre, ajoutez le nom de votre fichier exécutable dans le paramètre suivant et définissez la valeur pour correspondre au réglage désiré.

HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
   SOFTWARE
      Microsoft
         Internet Explorer
            Main
               FeatureControl
                  FEATURE_BROWSER_EMULATION
                     contoso.exe = (DWORD) 00009000

Windows Internet Explorer 8 et versions ultérieures. La fonction FEATURE_BROWSER_EMULATION définit le mode d'émulation par défaut pour Internet Explorer et prend en charge les valeurs suivantes.

Valeur Description

  • 11001 (0x2AF9 Internet Explorer 11. Webpages sont affichés dans IE11 mode de bord, quelle que soit la directive! DOCTYPE.

    11000 (0x2AF8) IE11. Pages internet contenant à base de normes! DOCTYPE directives sont affichées dans le mode de bord IE11. Valeur par défaut pour IE11.

    10001 (0x2711) Internet Explorer 10. Webpages sont affichés dans IE10 mode standard, quelle que soit la directive! DOCTYPE.

    10000 (0x02710) Internet Explorer 10. Les pages Web contenant basée sur des normes! directives DOCTYPE sont affichées dans les normes IE10 mode. Valeur par défaut pour Internet Explorer 10.

    9999 (0x270F) Windows Internet Explorer 9. Webpages sont affichés dans mode standard IE9, quelle que soit la directive! DOCTYPE.

    9000 (0x2328) Internet Explorer 9. Webpages contenant basée sur des normes! directives DOCTYPE sont affichées en mode IE9. Valeur par défaut pour Internet Explorer 9.

    Important Dans Internet Explorer 10, pages internet contenant basée sur des normes! directives DOCTYPE sont affichées dans les normes IE10 Mode.

    8888 (0x22B8) Webpages sont affichées en mode Standards IE8, quelle que soit la directive! DOCTYPE.

    8000 (0x1F40) contenant Webpages normes basées directives! DOCTYPE sont affichés en mode IE8. Valeur par défaut pour Internet Explorer 8 Important Dans Internet Explorer 10, pages internet contenant basée sur des normes! directives DOCTYPE sont affichées dans les normes IE10 Mode.

    7000 (0x1B58) pages internet contenant des normes fondées sur les directives! DOCTYPE sont affichés en mode IE7 normes. Valeur par défaut pour les applications qui héberge le contrôle WebBrowser.

ref complète ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top