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 :

Parvenir à lancer deux évènements avec window.event


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Webmaster
    Inscrit en
    Mars 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2007
    Messages : 39
    Par défaut Parvenir à lancer deux évènements avec window.event
    Bonjour,

    j'avoue que je suis un peu perdu. Je ne sais meme pas comment orienter mes recherches pour trouver la solution à mon problème.. puis-je trouver une réponse ici...

    j'ai récupéré un script permettant de faire un scroll sympa dans une div. Le problème c'est que j'aimerais l'utiliser à deux, voir plusieurs reprises dans ma page.

    Voila comment ca se passe dans mon JS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    this.addEvent = function(obj,type,fn){
    	if(obj.attachEvent){
    		//alert("end");	
    		obj['e'+type+fn] = fn;
    		obj[type+fn] = function(){obj['e'+type+fn](window.event );}
    		obj.attachEvent('on'+type, obj[type+fn]);
     
    	} else {
    		obj.addEventListener(type,fn,false);
    	};
    };
    addEvent(window,"load",easyscroll);
    Quand j'ai que 1 scroll c'est OK, le problème viens lorsque je créé une autre fonction scroll à savoir "easyscroll2" ...
    J'ai créé une fonction easyscroll2, qui si j'appelle que celle ci fonctionne aussi mais je ne parviens pas à faire fonctionner les deux en meme temps...
    Voila ce que j'ai tenté :

    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
    22
    23
    24
    25
    26
    27
    28
    29
     
    this.addEvent = function(obj,type,fn){
    	if(obj.attachEvent){
    		//alert("end");	
    		obj['e'+type+fn] = fn;
    		obj[type+fn] = function(){obj['e'+type+fn](window.event );}
    		obj.attachEvent('on'+type, obj[type+fn]);
     
    	} else {
    		obj.addEventListener(type,fn,false);
    	};
    };
     
     
     
    this.addEvent2 = function(obj,type,fn){
    	if(obj.attachEvent){
    		//alert("end");	
    		obj['e'+type+fn] = fn;
    		obj[type+fn] = function(){obj['e'+type+fn](window.event );}
    		obj.attachEvent('on'+type, obj[type+fn]);
     
    	} else {
    		obj.addEventListener(type,fn,false);
    	};
    };
     
    addEvent(window,"load",easyscroll);
    addEvent2(window,"load",easyscroll2);
    Et du coup seul easyscroll2 fonctionne

    ps : J'ai bien fait attention dans les deux fonction d'appeler les div correspondantes... je pense que le problème est au niveau du "load" il ne lance qu'une des deux fonction, ou l'une prend le pas sur l'autre... mais comment faire ?

    Merci si quelqu'un prend le temps de me lire et pourquoi pas de m'aider

  2. #2
    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
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    obj['e'+type+fn] = fn;
    obj[type+fn] = function(){obj['e'+type+fn](window.event );}
    Ca sert à quoi tout ça ???

    Et surtout, pourquoi créer deux fonctions qui font la même chose ?
    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

  3. #3
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Ton code est une horreur, as-tu seulement essayé de comprendre ce que tu faisais, pourquoi définir 2 fois "addEvent" de ton window ?

    Ce que tu veux faire c'est rajouter un seul "type d'event" (load) sur un seul objet (window) donc il est normal d'appeler qu'une seule fois ta fonction addEvent (dans tous les cas la définir 2 fois aurait dut directement te sauter aux yeux comme une aberration). Mais tu veux lui passer 2 actions (si j'ai bien compris), tu dois donc lui passer tes 2 fonctions au lieu d'une seule, il suffit donc simplement d'appeler une des fonctions dans l'autre ou plus proprement faire une fonction qui appelle les deux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    addEvent(window,"load",function(){
    	easyscroll.apply(this,arguments); // apply permet d'appeler ta méthode avec l'objet courant "this" et de repasser les arguments reçus à la fonction (easyscroll)
    	easyscroll2.apply(this,arguments);
    });

  4. #4
    Membre averti
    Profil pro
    Webmaster
    Inscrit en
    Mars 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2007
    Messages : 39
    Par défaut
    Tout d'abord merci pour votre aide !

    Merci Willpower pour ton aide. Comme tu le disais, je me doute qu'il s'agissait d'une aberration mais ce bout de code, que j'ai récupéré d'une source, je ne le saisissais pas vraiment. J'ai tenté pas mal de chose, en vain et surtout sans savoir ou chercher les solutions.

    Du coup, grâce à ton aide, j'ai pu faire fonctionner mes deux fonctions ! et surtout en ayant mieux compris, donc merci
    Bonne fin de journée à vous et merci de votre temps !

    David

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

Discussions similaires

  1. propagation événement avec dispatch event
    Par john123 dans le forum Flex
    Réponses: 3
    Dernier message: 19/02/2009, 13h25
  2. Lancer deux classes avec les threads
    Par Invité1 dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 15/05/2008, 19h06
  3. Synchroniser 2 dossiers sur deux pc différents avec Windows
    Par Mut dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 26/05/2006, 11h33
  4. comparer deux fichiers avec une api windows
    Par sweetdreamer dans le forum Windows
    Réponses: 4
    Dernier message: 25/05/2006, 22h10
  5. Réponses: 2
    Dernier message: 04/11/2003, 12h50

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