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 :

[DOM] attachEvent et addEventListener versus =fonction(){}


Sujet :

JavaScript

  1. #1
    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 640
    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 640
    Points : 66 672
    Points
    66 672
    Billets dans le blog
    1
    Par défaut [DOM] attachEvent et addEventListener versus =fonction(){}
    ça fait un moment que cela me travaille et voici que l'occasion se présente...

    Voici un extrait d'un post
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (window.document.attachEvent)    ? window.document.attachEvent("onmousemove", posSouris) : window.addEventListener("mousemove", posSouris, false);
    je me posais la question à savoir pourquoi utiliser cette syntaxe plutot que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function populate(){document.onmousemove=function(event){getMouse(event)}}
    testé sous IE et FFX ...
    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 !

  2. #2
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 374
    Points
    374
    Par défaut
    Y'a une fonction sur Quirksmode qui gère tout ça très bien avec une total abstraction de cible

  3. #3
    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 640
    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 640
    Points : 66 672
    Points
    66 672
    Billets dans le blog
    1
    Par défaut
    ça ne répond pas à ma question

    plus clairemlent pourquoi addEvent machin chose qui necessite de différentier les browser plutot que d'attribuer une fonction qui semble crossbrowser ...
    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 !

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Ca serait pas tout simplement un pb "historique" ?
    window.addEventListener pas compatible, et attachEvent pas référencé sur d'autres sites (donc + récent ?)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function populate(){document.onmousemove=function(event){getMouse(event)}}
    daterait donc d'une époque où les fonctions de gestion d'évènements n'étaient pas aussi complètes dans tous les nav'.

    Ce n'est qu'une supposition

    (et désolé pour les interprétations au second degré qui pourraient être faites par les esprits mal intentionnés )
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  5. #5
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 374
    Points
    374
    Par défaut
    Simplement :

    addEventListener et attachEvent sont respectivement les modèles Dom et Msie.
    Les deux vont trigger une event representé par on+action.

    Tu peux également accèder à cette méthode en la definissant à la main, donc en accrochant une fonction sur une elementHTML.

    addEventListener et attachEvent sont en fait des raccourcis.

  6. #6
    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 640
    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 640
    Points : 66 672
    Points
    66 672
    Billets dans le blog
    1
    Par défaut
    tu parles d'un raccourci si tu es obligé de différentier les navigateur

    Je resterais donc sur ma syntaxe crossbrowser
    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 !

  7. #7
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 374
    Points
    374
    Par défaut
    Citation Envoyé par SpaceFrog
    tu parles d'un raccourci si tu es obligé de différentier les navigateur

    Je resterais donc sur ma syntaxe crossbrowser
    1 - Non, tu ne differencies pas le navigateur, tu différencies un modèle via un object, et il n y'a que IE 5.5 et IE 6 à identifer.
    2-Ta syntaxe est crossbrowser, la mienne aussi, une fois la fonction ajoutée dans la page.

    Ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    addEvent(monelement,'click',cacher)
    On appelle ça un one-liner en programation

  8. #8
    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 640
    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 640
    Points : 66 672
    Points
    66 672
    Billets dans le blog
    1
    Par défaut
    click ?
    tu as la liste des events qu'on peut listener ?
    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 !

  9. #9
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 374
    Points
    374
    Par défaut
    Citation Envoyé par SpaceFrog
    click ?
    tu as la liste des events qu'on peut listener ?
    Tous ceux disponibles sur l'element passé en premier paramètre.
    Ensuite la tu omets le on de onclick par exemple, la fonction le rajoute directement.

  10. #10
    Inactif
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 117
    Points : 142
    Points
    142
    Par défaut
    http://www.quirksmode.org/blog/archi..._winner_1.html

    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
     
    function addEvent( obj, type, fn )
    {
    	if (obj.addEventListener)
    		obj.addEventListener( type, fn, false );
    	else if (obj.attachEvent)
    	{
    		obj["e"+type+fn] = fn;
    		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
    		obj.attachEvent( "on"+type, obj[type+fn] );
    	}
    }
     
    function removeEvent( obj, type, fn )
    {
    	if (obj.removeEventListener)
    		obj.removeEventListener( type, fn, false );
    	else if (obj.detachEvent)
    	{
    		obj.detachEvent( "on"+type, obj[type+fn] );
    		obj[type+fn] = null;
    		obj["e"+type+fn] = null;
    	}
    }

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

Discussions similaires

  1. [DOM] Affichage de champs en fonction de l'âge.
    Par HekThor dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 15/01/2009, 13h39
  2. [DOM] pointer un élément en fonction de ses css
    Par cerealkiller dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 26/02/2008, 18h00
  3. [DOM] Passage de paramètre à une fonction : echec
    Par Nyphel dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 20/10/2007, 23h11
  4. [DOM] Modification du style en fonction du grand-parent ?!
    Par ghohm dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 03/07/2007, 15h50
  5. [DOM] Onmouseover pour lancer une fonction avec arguments
    Par Trock dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 01/06/2007, 13h31

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