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

JavaScript Discussion :

Interagir avec une page html


Sujet :

JavaScript

  1. #1
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut Interagir avec une page html
    Bonjour,

    Je souhaite interagir avec deux objets d'une page html :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <button class="control control-next" type="button" data-action="nextSong" title="Suivant" data-reactid=".3.3.1.0.4.0"></button>

    pour déclencher le passage à la chanson suivante.

    Puis

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <div class="player-track" data-action="seek" data-reactid=".3.3.0.1">
        <h2 class="player-track-title heading-2" data-reactid=".3.3.0.1.0">
            <span class="player-track-link" data-action="link" data-href="/album/74479" data-reactid=".3.3.0.1.0.0">Eye of the Tiger</span>
        </h2>
        <h3 class="player-track-artist heading-2-sub ellipsis" data-reactid=".3.3.0.1.1">
            <span data-reactid=".3.3.0.1.1.0">par</span>
            <span data-reactid=".3.3.0.1.1.1">&nbsp;</span>
            <span data-reactid=".3.3.0.1.1.2:0:0"></span>
            <span class="player-track-link" data-action="link" data-href="/artist/39" data-reactid=".3.3.0.1.1.2:0:$artist_39">Survivor</span>
         </h3>
    </div>

    pour récupérer le titre et l'auteur de la chanson.

    Je programme en C++/wxWidgets mais j'ai besoin de comprendre quelles instructions javascript envoyer à la page. Page exemple, le bouton "Suivant" n'a pas d'ID. Comment le lancer via une commande extérieure ?

    Merci.

    Philippe

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Il n'y a pas que les ID pour identifier un élément, on peut venir le sélectionner en JavaScript par bien d'autres moyens (nom de tag, class, attributs et valeurs d'attributs...)

    Dans le cas présent il y a déjà un JS qui écoute un évènement sur ce bouton data-action="nextSong". Il faudrait regarder le code du JS existant et voir si on ne peut pas appeler directement la fonction appelée à la suite de cet événement.
    One Web to rule them all

  3. #3
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Merci Sylvain,
    Je n'arrive pas à trouver la fonction. La page est http://www.deezer.com/.
    En affichant le code source, je n'y vois même pas le champ "nextSong".
    Peut-être est-il ajouté de façon dynamique.

    Philippe

  4. #4
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Tu veux injecter du JS sur un site qui ne t'appartient pas ? Le seul moyen de faire ça, c'est une extension au navigateur et ton code ne fonctionnera plus du jour au lendemain dès que Deezer voudra mettre à jour son site.
    One Web to rule them all

  5. #5
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Voici mon objectif :

    * en travaillant, il m'arrive d'écouter des playlists (par exemple sous deezer),
    * lorsque la chanson ne me plait pas, je suis obligé de cliquer sur l'icône du navigateur dans la barre d'outil windows, de sélectionner le bon onglet (si besoin), de cliquer sur suivant, puis de revenir à mon application initiale,
    * lorsque la playlist diffuse une super chanson que je ne connais pas, je fais la même manip pour aller copier le titre.

    Je voudrais pouvoir plus directement faire ces deux séries d'opérations :
    * lancer "directement" la fonction "suivant",
    * copier "directement" la balise contenant le titre.

    Rien de plus ambitieux...

  6. #6
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Bonjour,

    Pour faire suite à mon précédent mail :
    a) Je n'ai toujours pas trouvé la fonction à appeler. Je tente donc d'autres solutions.
    b) J'arrive à déclencher le clic sur un bouton par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('submit').click();
    c) Je n'arrive pas à déclencher le clic sur la balise <a> contenue dans un div. Cette balise a une seule propriété définie : href
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="div_1"><a href="..."</a><div>
    La commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('div_1').click();
    n'a pas d'effet.

    Merci pour toute aide

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    Je n'arrive pas à déclencher le clic sur la balise <a> contenue dans un div. Cette balise a une seule propriété définie : href
    et pourtant tu étais bien parti en faisant document.getElementById('div_1')... qui te permet de récupérer la <div>, il te faut après récupérer le <a> de cette <div> avant de lui appliquer ton click().

  8. #8
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Merci,

    Mais alors, dans le cas suivant, comment récupérer le <a> qui va bien, c'est à dire celui qui n'a pas display à none ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="div_1" style="display: block;"><a style="display: none;" href="...">...<a href="...">...</a><a style="display: none;" href="...">...<a style="display: none;" href="...">...</a><a style="display: none;" href="..."></a></div>
    Philippe

  9. #9
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Je pense avoir trouvé ce vers quoi tu voulais me diriger...

    .children[1] pointe sur le second <a>

    Si la structure n'est pas constante, il faut que je balaie tous les enfants et que je fasse des tests : est-ce un <a> ? est-il affiché ?

    c'est ça ?

    Merci !

  10. #10
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.querySelector('[data-action="nextSong"]').click()
    Mais j'ai de sérieux doutes sur la faisabilité et la praticité de ce que tu essaies de faire.
    One Web to rule them all

  11. #11
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    J'ai fait des tests sur plusieurs pages et ça marche bien : j'alimente des champs de saisie et je clique sur les boutons souhaités.
    Il me reste un problème : si je me connecte à une page deezer via l'émulateur IE11, certains boutons (par exemple "skip") sont inactifs.
    Il doit avoir des clés de registre à saisir pour que l'émulateur IE11 accepte toutes les commandes.
    J'ai lu la doc, mais il a beaucoup de clés qui régissent le fonctionnement de l'émulateur.

  12. #12
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    J'ai testé ta commande : elle fonctionne très bien !!
    Je peux passer à la chanson suivante.
    Du coup, je me rends compte que le problème que je rencontre avec l'émulateur IE11 n'est pas un problème de bouton.
    C'est plutôt le module de lecture de la chanson qui ne démarre pas :
    Nom : Player.png
Affichages : 362
Taille : 51,7 Ko

    Il reste à 00:00.

    Le changement de piste marche bien. Le clic sur play est lui aussi bien pris en compte puisque le bouton "s'enfonce" : mais la lecture ne démarre pas.

    Je suppose qu'il faut ajouter une clé de registre pour que l'émulateur IE11 accepte le démarrage du playeur... mais laquelle...

  13. #13
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Citation Envoyé par Pgs Voir le message
    J'ai fait des tests sur plusieurs pages et ça marche bien : j'alimente des champs de saisie et je clique sur les boutons souhaités.
    Comme l'a fait remarqué Sylvain plus haut, on ne peut pas injecter du JS sur un site qui ne t'appartient pas à moins d'utiliser une extension au navigateur alors je me demande comment tu as fait ?

    Est-ce possible en utilisant des frames ? Mais je crois qu'il faut que les pages dans les frames aient le même domaine pour pouvoir communiquer... J'ai vu un fil qui en parlait mais j'ai peut-être mal compris...

  14. #14
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Utilisation d'un objet C++ qui appelle le WebControl IE

  15. #15
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Ah merci je ne connaissais pas cela... Est-ce comme si tu intégrais le navigateur dans ton application ? Je demande cela car il semble que ce soit possible d'intégrer Google chrome en Java ou C#... Ce qui serait mieux que le webview de javafx qui est quand même bien.

  16. #16
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Oui, c'est l'objet wxWebView de la bibliothèque wxWidgets

  17. #17
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Ah ok merci bien !

Discussions similaires

  1. Interagir avec une page web
    Par ToTo13 dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 20/01/2015, 08h40
  2. [Débutant] Application Vb interagit avec une page HTML Comment Faire ?
    Par x2FuUk dans le forum VB.NET
    Réponses: 5
    Dernier message: 02/09/2014, 21h57
  3. VB6: Récupération des meta d'une page HTML avec HTMLDocument
    Par Matounet dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 22/09/2011, 07h55
  4. Dessiner avec une page html ?
    Par bob633 dans le forum Langage
    Réponses: 2
    Dernier message: 22/04/2010, 11h27
  5. Réponses: 7
    Dernier message: 14/09/2005, 10h50

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