IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Exécution du Javascript d'une page HTML téléchargée par un client C#


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 20
    Points : 13
    Points
    13
    Par défaut Exécution du Javascript d'une page HTML téléchargée par un client C#
    Bonjour à tous,

    Tout est dans le titre.

    Voici mon problème : Mon application C#/WPF doit télécharger des pages Web pour analyser leur contenu HTML (les attributs des balises uniquement). Seulement, certaines pages génèrent leur véritable contenu HTML via du Javascript. Il faut donc que mon programme puisse appliquer ce code Javascript sur le code HTML téléchargé pour pouvoir enfin analyser la vraie page finale.

    Ma question est donc : Comment pourrait-je faire pour exécuter ce Javascript dans mon client C# ?

    J'ai pensé à utiliser un "WebBrowser" et son attribut "Document", mais je n'ai rien compris à son fonctionnement, et utiliser un contrôle graphique pour faire du traitement pur... Je n'ai pas non plus trouvé un éventuel "moteur JavaScript" en C# auquel je pourrait donner du code HTML/Javascript, puis récupérer le contenu après exécution du Javascript.

    Donc

    Edit: lol, apparament j'ai bien posé ma question, je suis en tête des résultats de Google pour "moteur javascript c#".

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Bon j'ai fait des recherches approfondis et quelques expérimentations.

    D'abord, j'ai essayé différents portages C# du moteur Javascript V8 de Google :
    - Javascript .NET ne compile pas et le binaire fourni plante (forcément il est né au début du mois...).
    - v8sharp compile bien (en "Debug" car le mode "Release" est cassé) et fonctionne également. Mais le moteur V8 seul semble ne faire que du traitement (boucles, calculs...), pas d'édition de page HTML. Donc à moins que j'ai raté quelque chose, cette piste ne mène à rien.

    J'ai essayé aussi des moteurs Web complets :
    - GeckoFX est un contrôle WinForm contenant le moteur Gecko de Firefox. Il a évidemment besoin d'une lourde installation de XulRunner pour fonctionner, il n'a pas d'équivalent WPF, ce qui le rend atrocement pénible à utiliser en WPF (d'ailleurs j'ai toujours pas réussi), et le projet semble officiellement décédé (de ce que j'ai vu, aucune mise à jour en 2 ans).
    - Webkit .NET est aussi un contrôle WinForm (raaah ! ) basé cette fois sur le moteur WebKit. Il est vivant (la dernière mise à jour date de la semaine dernière) et se traine également un semi-remorque de DLL nécessaires à Webkit. Je n'ai toujours pas non plus réussi à l'intégrer dans mon application WPF.

    Personne n'a déjà été confronté a ce problème ?

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Pourquoi ne pas encapsuler un control Browser dans l'application ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Pourquoi ne pas encapsuler un control Browser dans l'application ?
    Bonjour Bluedeep.

    Qu'entend-tu exactement par "encapsuler un control Browser" ? Ce n'est pas ce que font Webkit.NET et GeckoFX ? Si c'est cela, j'essaye mais je n'arrive pas pour l'instant à faire fonctionner ces contrôles.

    Edit: Ça y est j'ai réussi à afficher une page avec Webkit .NET !! (*émotions* ) Le problème venais que contrairement à ce qu'affirme le README, il ne suffit pas de faire une référence vers "WebKitBrowser.dll", il faut en plus copier tout le contenu du répertoire "bin" de Webkit .NET dans le répertoire de l'application. Et j'ai même trouvé une propriété "Document" qui représente la structure de la page. Reste à savoir comment l'exploiter et si elle contient bien la page finale.

    Je vous tiens au courant.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Bon, il faut faire appel à un évènement pour attendre que la récupération de la page soit terminée... Et la gestion des évènements de Webkit .NET est chaotique... Mais apparemment c'est la solution la plus stable que j'ai testé, donc je vais me débrouiller.

    Sinon, j'ai trouvé également berkelium-sharp qui est un contrôle WinForm (encore...) de WebKit. Mais qui a la particularité de faire un combo très fort : WPF > WinForm > C++ > Webkit. Apparemment il aurait quand même l'avantage de fonctionner avec XNA, je dit apparemment parce que le source du SVN que j'ai récupéré semble incomplet et ne compile donc pas (il manque pleins de fichiers *.h et DLL).

    Voilà, à défaut de m'avoir aidé, ce topic peut éventuellement aider quelqu'un qui veut intégrer un client Web dans son application C# en listant les solutions actuelles.

    Et si quelqu'un veut se lancer dans un contrôle WebBrowser WPF natif exploitant WebKit, il peut y aller et devenir un roi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécuter code Javascript d'une page Web en C#
    Par pirouette4toupies dans le forum C#
    Réponses: 1
    Dernier message: 30/04/2013, 11h08
  2. Réponses: 7
    Dernier message: 05/04/2011, 19h13
  3. [RegEx] Ciblé les blocs Javascript dans une page HTML
    Par budhax dans le forum Langage
    Réponses: 2
    Dernier message: 20/05/2010, 15h24
  4. Affichage de XML grâce à du javascript dans une page HTML
    Par broise dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 30/07/2008, 10h41
  5. Exécuter un vbs dans une page html
    Par bailamos dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 02/01/2008, 08h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo