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 :

event.clientX dans firefox.


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 13
    Points : 8
    Points
    8
    Par défaut event.clientX dans firefox.
    Je cherche à récupérer la position X d'un click sur un div

    J'ai fait cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var sourisX = event.clientX;
    et ça fonctionne très bien avec Chrome et Edge mais ca ne fonctionne pas avec Firefox.

    Merci par avance à qui pourra m'aider.

    Quelques précisions:
    D'abord une image:
    Nom : radiomp3.jpg
Affichages : 1200
Taille : 18,2 Ko
    C'est un lecteur audio pour remplacer celui fourni par la balise html5 <audio> qui n'est pas terrible et qui simule un poste de radio à l'ancienne.
    Sur l'image que vous voyez, tout est fonctionnel, boutons, barre d'avance qui s'allume ou s'éteint au démarrage.
    L'aiguille rouge que vous voyez au milieu marque l'avancement de la lecteure du morceau.
    Quand je clique sur la fenêtre de déroulement, je récupère la position di click et je fais avancer l'aiguille sur la position récupérée et l'avancement du morceau correspondant.
    Tout cela fonctionne parfaitement sur CHROME et EDGE mais la récupération du click ne fonctionne pas avec FIREFOX, ce qui est regrtable tout de même.
    Je vous livre mes codes:

    Depuis ma page php, j'apelle ma fonction comme ceci:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div id="allume" onclick="avance()">
    <span id="aiguille">I</span>
    </div>
    Le span n'au aucune importance pour le sujet qui me préoccupe.
    Voila maintenant ma fonction en Javascript;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function avance(){
    	var divX = (document.getElementById("allume").offsetLeft);//Je récupère la position du div> de déroulement 
    	var sourisX = event.clientX;//je récupère la position X du click
    	var posClickX= sourisX-divX;// je calcule la position du click par rapport au <div> de déroulement
    	document.getElementById("aiguille").style.marginLeft = posClickX+"px";//Je place mon aiguille a la position du click
    	var nCurrentTime=Math.round((tt*posClickX)/140);// je calcule le currentTime proportionnel au click
    	document.getElementById("myAudio").currentTime=nCurrentTime;// je fais avance le morceau à la position correspondante
    }
    Donc tout le problème est de récupérer ce que j’appelle "sourisX" à la troisième ligne.
    Je n'ai pas réussi à intégrer la réponse que j'ai reçue, et dont je remercie chaleureusement l'auteur, dans mon javascript.

    Merci à tous et à plus !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 638
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    Teste avec ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var mouse;
    function storeMouse(e)
    {
        if(!e) e = window.event;
        mouse = {clientX: e.clientX, clientX:e.clientY};
    }
    function test(e){
         alert(mouse.clientX);
    }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Merci, je vais essayer.
    Après essai, ca ne marche pas. A moins que je l'ai mal intégré dans mon script.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 974
    Points : 44 147
    Points
    44 147
    Par défaut
    Bonjour,
    le plus simple que tu ais à faire et de passer l'événement à ta fonction dans ton javascript inline
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="allume" onclick="avance( event)">
    et de le récupérer dans ta fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function avance( event){
      // le code
    }
    c'est pas très propre mais cela devrait fonctionner.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    OK MERCI, je vais tester ça !

  6. #6
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    BRAVO. MERCI, ça marche et finalement, ce n'était pas compliqué mais pourquoi ne serait-ce pas très propre ?

    MERCI encore !

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 974
    Points : 44 147
    Points
    44 147
    Par défaut
    ...mais pourquoi ne serait-ce pas très propre ?
    parce qu'il est plus propre de séparer les différentess « couches », HTML-CSS-JS.
    Cela pourrait donner quelque chose comme :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta charset="utf-8">
    <title>Séparation des couches</title>
    <style>
    #move {
      position:absolute;
      border:1px solid #abc;
      width:5em;
      height:5em;
    }
    </style>
    <script>
    function avance(e){
      this.style.left = e.clientX +'px';
      this.style.top  = e.clientY +'px';
    }
    // Initialisation après chargement du DOM
    document.addEventListener("DOMContentLoaded", function() {
      var oDiv = document.getElementById('move');
      oDiv.onclick = avance;
    });
    </script>
    </head>
    <body>
      <div id="move"></div>
    </body>
    </html>

    PS : Pense à mettre la discussion en résolue.

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

Discussions similaires

  1. saut de ligne sur li dans firefox
    Par bractar dans le forum Balisage (X)HTML et validation W3C
    Réponses: 14
    Dernier message: 28/03/2006, 14h10
  2. appel d'ID de balise div dans firefox
    Par la.sophe dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/02/2006, 22h28
  3. problème avec la méthode getElementById() dans Firefox
    Par matrouba dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/12/2005, 08h55
  4. La barre de statut (ou barre d'état) dans FireFox...
    Par jeyce dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/08/2005, 11h26
  5. event.pageX, Event.pageX, Event.clientX, event.x ... ?
    Par gg14bis dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/06/2005, 15h01

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