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 :

évenement scroll et molette souris


Sujet :

JavaScript

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut évenement scroll et molette souris
    Bonjour,

    Je cherche à gérer l'évènement de scroll de la fenêtre sur laquelle s'éxécute mon code
    J'ai testé le code ci-dessous qui ne marche pas du tout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if(window.addEventListener){
    window.addEventListener('onScroll',function() {
    Scrollfen();
    },false)
    } else if(window.attachEvent) {
    window.attachEvent('onScroll',function() {
    Scrollfen();
    })
    }
    Ce qui revient à demander à ajouter la fonction Scrollfen() à l'évènement scroll
    Et je voudrais en plus détecter l'utilisation de la molette pour déplacer la scrollbar, l'idée étant de détecter un déplacement de la scrollbar à l'écran
    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Remplace onScroll par onscroll

    Concernant la molette:

    Et je voudrais en plus détecter l'utilisation de la molette pour déplacer la scrollbar,
    Quand tu tournes la molette le scroll s'effectue automatiquement, non ? Et dans ce cas tu vas recevoir un événement onscroll. Est ce suffisant ou as tu un besoin fondamental de recevoir les événements de la molette ?

    Si jamais tu veux les gérer toi même l'idée est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function wheel(event) {
    ...
    }
     
    if (window.addEventListener)
            window.addEventListener('DOMMouseScroll', wheel, false);
            window.onmousewheel = document.onmousewheel = wheel;
    ERE

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut
    J'ai testé avec le code ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(window.addEventListener){
    window.addEventListener('onscroll',function() {
    Scrollfen();
    },false)
    } else if(window.attachEvent) {
    window.attachEvent('onscroll',function() {
    Scrollfen();
    })
    }
    Et chose rare, internet explorer fonctionne parfaitement mais pas firefox
    J'ai cherché la solution mais pour l'instant je ne vois pas

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut
    bonjour,

    pourquoi se casser la tête avec addEventListener et attachEvent

    Code x : 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    
    <head>
    
    <title></title>
    <meta http-equiv="Content-type" content="application/xhtml+xml; charset=ISO-8859-1" />
    
    <meta http-equiv="Content-Language" content="fr" />
     
    
    <script type="text/javascript">
    <!-- 
    function ajouteEvenement()
    {
    	if (document.all)
    		document.body.onscroll = function(){rouleRoule()};	// pour IE
    	else
    		window.onscroll = function(){rouleRoule()};	// pour FF
    
    }
     
    function rouleRoule()
    {
    	document.body.innerHTML += "roule<br>";
    }
    
    
    //-->
    </script>
     
    </head>
     
     
    <body onload="ajouteEvenement()">
    
    <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    
    
    </body>
    </html>

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut
    Le code s'éxécutera sur un site ne m'appartenant pas donc voilà pourquoi
    Personne ne sait pourquoi firefox ne reconnait pas onscroll ?

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut
    Alors en faisant de longues recherches sur google j'ai trouvé un site qui explique le problème, voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if(window.addEventListener) // Firefox 1+, Opera 9, Safari 3+, etc.
        {
        window.addEventListener("scroll", ScrollingDetected, false);
        }
      else if(document.addEventListener) // Opera 7, Opera 8
        {
        document.addEventListener("scroll", ScrollingDetected, false);
        }
      else if("onscroll" in self) // MSIE 6, 7 and MSIE 8
        {
        self.onscroll = ScrollingDetected;
        };
    J'ai interprété ce code et j'ai fait ma sauce que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(window.addEventListener){
    window.addEventListener('scroll',function() {
    Scrollfen();
    },false)
    } else if(window.attachEvent) {
    window.attachEvent('onscroll',function() {
    Scrollfen();
    })
    }
    Donc on voit bien que pour firefox c'est "scroll" et pour ie c'est onscroll encore un truc de fou lol
    Dans le code que j'ai trouvé on voit que le développeur gère un cas que je ne gère pas actuellement que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    else if(document.addEventListener) // Opera 7, Opera 8
    A-t-il raison ? Est ce que mon code ne serait pas compatible avec opéra 7 et 8 ??? et que pensez vous de ma bidouille qui fonctionne sur ie7 et mozilla firefox 2

  7. #7
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Donc on voit bien que pour firefox c'est "scroll" et pour ie c'est onscroll encore un truc de fou lol
    Pourtant Mozilla indique bien que c'est onscroll. Et j'ai testé, c'est ok.

    https://developer.mozilla.org/En/DOM/Window.onscroll

    Quelle version de Firefox utilises tu ?

    ERE

  8. #8
    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 : 54
    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 emmanuel.remy Voir le message
    Pourtant Mozilla indique bien que c'est onscroll. Et j'ai testé, c'est ok.

    https://developer.mozilla.org/En/DOM/Window.onscroll

    Quelle version de Firefox utilises tu ?

    ERE
    Attention emmanuel, tu confonds
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.addEventListener("scroll", ScrollingDetected, false);

    Effectivement, pour associer un événement à un élément, on note bien :
    mais cette formulation ne permet pas d'accumuler les événements, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    window.onload = function(){fonction1()}
    window.onload = function(){fonction2()}
    seule fonction2 sera exécutée au chargement.
    En revanche, en utilisant addEventListener, il ne faut pas mettre le on pour désigner l'événement, ce n'est pas reconnu par IE (d'où attachEvent, avec l'événement désigné avec le on...), mais on peut accumuler les événements :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.addEventListener("load", fonction1, false);
    document.addEventListener("load", fonction2, false);
    exécutera fonction1 puis fonction2.

  9. #9
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Merci Bovino pour ce recadrage.

    Il n'y a jamais eu de souci vis à vis de l'aspect accumulation d'événement , mais je mentirais si je disais avoir déjà fait attention plus que cela au "détail" du "on" ou pas "on" dans les noms d'événement!

    A force d'utiliser les frameworks, on en oublie les fondamentaux...

    ERE

  10. #10
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut
    Par contre chose étonnante, l'évènement scroll n'est pas forcément réalisé par l'internaute sur ce que j'ai pu voir. Par exemple, si on place une ancre il semble que l'évènement onscroll est appelé donc celà ne garantit en aucune façon que c'est l'internaute qui a scrollé
    Par contre, personne ne saurait si c'est nécessaire de gérer çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    else if(document.addEventListener) // Opera 7, Opera 8
    Est-ce vrai que opéra 7 et 8 ne gèrera pas bien l'évènement scroll si je ne mets pas cette ligne ?
    Merci

  11. #11
    Membre du Club Avatar de PhRey
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 197
    Points : 67
    Points
    67
    Par défaut
    Je me permet de faire remonter ce fil car je rencontre un soucis concernant la gestion de molette, pour action sur la scrollbar (ascenseur) et peut être que l'un d'entre vous pourrait m'aiguiller ?

    Plus précisément, j'utilise le code suivant pour générer mon propre ascenseur, par contre je suis infoutu de gérer cet ascenseur avec la molette (et c'est bien embetant ! ;o)

    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
    16
    17
    18
    19
    20
    21
    <!-- JAVASCRIPT DE LA SCROLLBAR !-->
     
    <script language="javascript" type="text/javascript">
    var Timer;
    var Pas = 15;
    function moveLayer(Sens) {
    Objet=document.getElementById("contenu");
    if(parseInt(Objet.style.top) + (Pas*Sens)>0) {
    clearTimeout(Timer);
    }
    else if(parseInt(Objet.style.top) + (Pas*Sens)<-(Objet.offsetHeight-document.getElementById("support").offsetHeight)) {
    clearTimeout(Timer);
    }
    else {
    Objet.style.top = (parseInt(Objet.style.top) + (Pas*Sens)) + "px";
    }
    Timer = setTimeout("moveLayer(" + Sens + ");", 30);
    }
    </script>
     
    <!-- FIN JAVASCRIPT DE LA SCROLLBAR !-->
    Et plus bas dans ma page html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <div style="background-color:#ffffff; width:350px; height:950px; float: right; right:0; left: 10;">
     
    <img onmouseover="moveLayer(1);" onmouseout="clearTimeout(Timer);" src="http://www.phreymusic.com/images/stories/up.jpg" style="cursor:pointer; position:absolute; right:0;" alt="up" />
     
    <img onmouseover="moveLayer(-1);" onmouseout="clearTimeout(Timer);" src="http://www.phreymusic.com/images/stories/down.jpg" style="cursor:pointer; position:absolute; right:0; bottom:0;" alt="down" />
     
    </div>
    Pour voir fonctionner tout le toutime, vous pouvez vous rendre ici : http://www.phreymusic.com
    Merci pour votre aide.

    Phil

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

Discussions similaires

  1. [Débutant] defilement scroll bar molette souris
    Par Arnaud69arnaud dans le forum VB.NET
    Réponses: 5
    Dernier message: 07/11/2014, 08h54
  2. Réponses: 3
    Dernier message: 18/03/2009, 16h13
  3. Molette souris et liste déroulante
    Par Maludi dans le forum IHM
    Réponses: 4
    Dernier message: 17/06/2005, 06h42
  4. Capturer la molette souris en plein écran
    Par Marekh dans le forum DirectX
    Réponses: 3
    Dernier message: 07/06/2005, 14h20
  5. Molette souris et DBCtrlGrid
    Par TieumB dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/09/2004, 12h16

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