J'ai testé des alternatives au composant de navigateur Web C# pendant quelques jours maintenant et voici ma liste :
1. Utiliser les nouvelles versions d'IE 8 et 9 :
Le composant de navigateur Web C# est IE7 et non IE8 ? Comment changer cela ?
Pour :
- Peu de travail nécessaire pour le faire fonctionner
- un certain support HTML5/CSS3 si IE9, complet si IE10
Cons :
- La machine cible doit avoir la version cible d'IE installée, IE10 est toujours en aperçu sur Win7.
Cela ne demande pas beaucoup de travail et vous pouvez obtenir un certain support HTML5 et CSS3 bien qu'il manque à IE9 certaines des meilleures fonctionnalités CSS3 et HTML5. Mais je suis sûr que vous pouvez faire fonctionner IE10 de la même manière. Le problème est que le système cible doit avoir IE10 installé, et comme il est encore en phase de prévisualisation sur Windows 7, je ne le conseille pas.
2. OpenWebKitSharp
OpenWebKitSharp est un wrapper .net pour le moteur webkit basé sur le projet WebKit.NET 0.5. WebKit est un moteur de mise en page utilisé par Chrome/Safari.
Pour :
- Développé activement
- Support HTML5/CSS3
Cons :
- De nombreuses fonctionnalités ne sont pas mises en œuvre
- Ne supporte pas x64 (l'application doit être construite pour x86)
OpenWebKit est très bien, bien que de nombreuses fonctionnalités ne soient pas encore mises en œuvre. J'ai rencontré quelques problèmes en l'utilisant avec Visual Studio, qui jette des références d'objet nulles ici et là en mode conception, il y a quelques problèmes de js. Toute personne l'utilisant remarquera presque immédiatement que l'alerte js ne fait rien. Les événements comme mouseup, mousedown... etc. ne fonctionnent pas, le drag and drop en js est bogué et ainsi de suite...
J'ai également eu quelques difficultés à l'installer car il nécessite l'installation d'une version spécifique du redistributeur VC, donc après l'exception, j'ai regardé le journal des événements, trouvé la version de VC et l'ai installée.
3. GeckoFX
Pour :
- Fonctionne sur le mono
- Développé activement
- Support HTML5/CSS3
Cons :
- Ne supporte pas x64 (l'application doit être construite pour x86)
GeckoFX est un contrôle de navigateur Web multiplateforme à intégrer dans les applications WinForms. Il peut être utilisé avec .NET sur Windows et avec mono sur Linux. Gecko est un moteur de mise en page utilisé par Firefox.
Je suis tombé sur quelques informations que GeckoFX n'est pas activement développé ce qui n'est pas vrai, bien sûr il est toujours une ou deux versions en retard de Firefox mais c'est normal, j'ai été vraiment impressionné par l'activité et le contrôle lui-même. Il fait tout ce dont j'ai besoin, mais j'ai eu besoin de temps pour le faire fonctionner, voici un petit tutoriel pour le faire fonctionner :
- Télécharger GeckoFx-Windows-16.0-0.2 Ici, vous pouvez vérifier si une version plus récente est disponible. GeckoFX
- Ajouter des références à deux dll téléchargées
- Comme GeckoFX est un wrapper, vous avez besoin de XulRunner, allez à Liste des versions pour voir lequel vous avez besoin
- Maintenant que nous savons de quelle version de XulRunner nous avons besoin, nous allons à Publication de Mozilla XulRunner Pour cela, allez dans le dossier version -> runtimes -> xulrunner-(votre_version).en-US.win32.zip, dans notre cas xulrunner-16.0.fr-US.win32.zip
- Dézippez tout et copiez tous les fichiers dans votre poubelle. \Debug (ou release si votre projet est réglé sur release)
- Allez dans le concepteur Visual Studio de votre formulaire, allez dans la boîte à outils, faites un clic droit à l'intérieur -> Choisissez les éléments -> Parcourez -> Trouvez le fichier dll winforms téléchargé de GeckoFX -> OK.
- Maintenant vous devriez avoir un nouveau contrôle GeckoWebBrowser
Si vous devez absolument utiliser Chrome, jetez un coup d'œil à ce produit appelé Awesomium Il est gratuit pour les projets non-commerciaux, mais la licence coûte quelques milliers de dollars pour les projets commerciaux.
19 votes
Pourquoi dites-vous que le contrôle WebBrowser utilise une ancienne version d'IE ? Il utilise la version installée sur le système de l'utilisateur, bien que le WebBrowser IE8 semble utiliser par défaut le rendu IE7 : blogs.msdn.com/ie/archive/2009/03/10/
21 votes
Parce que ce n'est pas le cas sur ma machine. J'ai installé IE8 mais le contrôle présente des problèmes d'affichage que je n'ai pas vus depuis IE 5. Un formulaire de connexion très simple, 2 champs avec une touche de CSS a un affichage déformé, et l'affichage de certains javascript ne fonctionne pas, alors qu'il s'affiche bien dans IE8, Firefox, Chrome, Opera ... donc j'ai supposé que le moteur de rendu était ancien. Je peux me tromper complètement et peut-être que le problème est en fait différent de ce que je pensais.
3 votes
@Sylverdrag : Vous avez tort. Il utilise le dernier IE de votre système. Cependant, j'ai lu quelque part que le contrôle WebBrowser a un problème de rétrocompatibilité plus fort que le navigateur autonome. IE8 peut avoir, par exemple, une icône à cliquer pour activer le mode IE7. Dans le cadre de votre programme, ce n'est pas possible, donc le contrôle passe par défaut au mode précédent pour des raisons de compatibilité. Par contre, je n'ai pas lu comment le configurer pour utiliser le "mode IE8".
0 votes
John : C'est étrange car la page s'affiche correctement en mode IE7 ainsi qu'en mode IE8 dans mon navigateur normal. (La page est your-translations.com/newDesign Cliquez sur le bouton de connexion pour voir les formulaires qui ont été modifiés. Comme vous pouvez le voir, c'est assez simple).
59 votes
En fait, John Sanders, vous avez tort. Il utilise ie4 et vous devez modifier une valeur de registre pour lui dire d'utiliser current. Cherchez "feature mode emulation" et vous obtiendrez vos réponses, changé récemment, incluait le mot clé native mais ils l'ont changé, google les mots clés que j'ai mentionnés avec "webbrowser control" et vous trouverez l'article msdn.
0 votes
@Erx_VB.NExT.Coder : Merci pour ce bijou. Pourriez-vous donner un lien vers l'article msdn directement, et si possible expliquer comment forcer un contrôle de navigateur web à utiliser la dernière version d'IE disponible sur la machine ?
1 votes
@TimRobinson Il n'utilise PAS la version qui est installée sur le système de l'utilisateur. J'utilise IE11, et lorsque je place un WebBrowser Control sur un nouveau formulaire Windows, puis que je l'exécute, il affiche des pages épouvantables. J'ai même essayé plus d'une vingtaine de tutoriels sur la façon de forcer le navigateur du WebControl à utiliser la dernière version ou la dernière version installée, mais rien ne fonctionne . Ça n'a jamais été le cas. Je ne sais pas quels sont les trucs que vous utilisez, mais il y a manifestement quelque chose qui nous échappe, car je n'ai jamais réussi à le faire fonctionner, pas plus que les autres personnes que je connais.
9 votes
Par défaut, un site hébergé
WebBrowser
utilise l'émulation d'IE7, sauf instruction contraire avecFEATURE_BROWSER_EMULATION
. Ceci est documenté ici : blogs.msdn.com/b/askie/archive/2009/03/23/2 votes
C'est bon, c'est une vieille question mais j'espère qu'elle vous sera utile : Vous pouvez définir le
WebBrowser
de contrôler l'utilisation de la plupart des versions d'IE sans trop de difficultés : stackoverflow.com/questions/18333459/