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 :

href et onclick en même temps


Sujet :

JavaScript

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2010
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 211
    Points : 102
    Points
    102
    Par défaut href et onclick en même temps
    bonsoir à tous,

    Je voudrais mettre un lien au niveau d'une page web, et ce dernier devra à la fois exécuter une requête sql présente dans un fichier hits.php mais aussi une instruction sur la page d'origine ( sans que je sois redirigé vers hits.php).

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="hits.php" onclick="AvrPopup(event, 'my', 'lightbox');">lien</a>
    Mais dans ce cas, seul le onclick s'exécute mais la requête dans hits.php ne se lance pas.

    Une idée??

    Merci à vous.

  2. #2
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    Dans ton cas, le mieux serait encore d'appeler ton script avec une requête AJAX synchrone (tu pourrais aussi bien avoir une requête AJAX asynchrone remarque et ça marcherait tout aussi bien c'est juste que c'est un peu plus simple de la garder synchrone).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    function requeteAJAX() {
      if (window.XMLHttpRequest) {              
        AJAX=new XMLHttpRequest();              
      } else {                                  
        AJAX=new ActiveXObject("Microsoft.XMLHTTP");
      }
      if (AJAX) {
         AJAX.open("GET", 'hits.php', false);                             
         AJAX.send(null);
         return AJAX.responseText;                                         
      } else {
         return false;
      }                                             
    }
    La fonction ci-dessus devrait normalement appeler ton script "hits.php" sans changer de page. Ce que tu peux faire pour l'intégrer c'est simplement de l'ajouter dans la fonction que tu appelles sur le click de l'hyperlien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <a href="AvrPopup(event, 'my', 'lightbox');">lien</a>
     
    //Là où se trouve la fonction AvrPopup
     
    function AvrPopup(...)
    {
    ...
    requeteAJAX();
    ...
    }
    Également, je ne suis pas sûr si ça va marcher, mais tu as essayé simplement de mettre return true sur le onclick de l'hyperlien? Si tu fais ça, oublie évidemment la partie AJAX mentionné avant. En fait, commence plutôt par ça avant de te lancer dans l'AJAX et voit ce qui se passe .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="hits.php" onclick="AvrPopup(event, 'my', 'lightbox'); return true;">lien</a>
    Bonne chance

    Osu

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    La question dont je me pose c'est :
    Si on utilise comme élément HTML un lien (<a href>) dont l'URL n'est pas celle que l'on veut, alors pourquoi utiliser un lien ?
    Plus de lien, plus de problème lié au click du lien, non ?

    Pourquoi ne pas utiliser une DIV, un SPAN, un BUTTON, etc ..., autre élément qui ne comporte pas de lien ?
    Si c'est une question de mise en forme, le Css permet d'obtenir le même rendu qu'un lien, quelque soit la balise.

    Ne pas perdre de vu aussi que les moteurs de recherche, ou autre ne tiennent pas compte de JS, donc les "onclick" seront ignorés et c'est l'URL dans le href qui sera suivi (donc hits.php) si c'est des liens.


    Sinon, pour couper l'herbe sous l'pied du click qui est naturellement effectué sur une balise <A>, c'est de faire un return false plutôt qu'un return true;
    Enfin, sauf erreur.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  4. #4
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    En fait, dans ma tête, je ne voulais pas vraiment "couper l'herbe sous l'pied" du onclick, c'était plutôt le contraire, j'avais l'impression que le fait d'avoir défini un onclick empêchait l'hyperlien de se rendre jusqu'à "l'exécution" de sa partie href, d'où mon "return true", mais tu as raison RunCodePhp, "return false" va effectivement arrêter le onclick

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par RunCodePhp
    Si on utilise comme élément HTML un lien (<a href>) dont l'URL n'est pas celle que l'on veut, alors pourquoi utiliser un lien ?
    Plus de lien, plus de problème lié au click du lien, non ?
    Ca s'appelle du bon sens ça !

    Citation Envoyé par RunCodePhp
    Sinon, pour couper l'herbe sous l'pied du click qui est naturellement effectué sur une balise <A>, c'est de faire un return false plutôt qu'un return true;
    Enfin, sauf erreur.
    Non, pas d'erreur, mais attention, l'attribut onclick génère une fonction anonyme, c'est donc cette fonction anonyme qui doit retourner false, pas la fonction AvrPopup() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="return AvrPopup(event, 'my', 'lightbox');"
    si la fonction AvrPopup() doit renvoyer l'autorisation ou non de suivre le lien,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="AvrPopup(event, 'my', 'lightbox');return false;"
    si le lien ne doit jamais être suivi.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2010
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 211
    Points : 102
    Points
    102
    Par défaut
    bonjour et merci de vos réponses à tous,

    Sinon, j'ai essayé le et le mais cela ne marche pas.

    Ce que je voudrais en fait c'est tout simplement :
    quand un internaute clique sur le lien, cela déclenche le script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AvrPopup(event, 'my', 'lightbox');
    qui permet de lancer la lecture d'une vidéo, mais en même temps, je voudrais pouvoir accéder à ma base de données pour incrémenter le compteur de nombre de vu de ladite vidéo, d'où l'utilisation du fichier hits.php qui intègre une requête SQL qui met à jour la base.

    Voilà, j'attends avec impatience vos idées.

    EDIT: la méthode de osuwariboy marche parfaitement. Merciiii

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

Discussions similaires

  1. Tutoriel sur le BDE ? (et question en même temps!)
    Par Yomane dans le forum C++Builder
    Réponses: 7
    Dernier message: 18/02/2004, 17h39
  2. Que deux événements qui se passent en même temps.
    Par Melchisedec dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 03/08/2003, 14h24
  3. Lancer deux sons en même temps...
    Par Julien_riquelme dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 03/05/2003, 17h00
  4. 2 fonctions qui tournent en même temps
    Par GOUGOU1 dans le forum C
    Réponses: 7
    Dernier message: 07/12/2002, 18h42
  5. gérer le clic gauche-droite en même temps de la sou
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 29/11/2002, 22h52

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