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 :

L'objet "event" en argument ?


Sujet :

JavaScript

  1. #1
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut L'objet "event" en argument ?
    Salut,

    Que pensez-vous de cette pratique qui consiste à mettre l'objet "event" en argument ?

    Exemple quand on écrit : elem.onclick = function (event) {...}...

    Après je remarque qu'on a accès à l'objet event à l'intérieur de la fonction mais en fait on aurait pu mettre n'importe qu'elle autre nom en argument comme "evt" et alors on a aussi accès à l'objet event à l'intérieur de la fonction...

    Mais apparemment (corrigez-moi si je me trompe) "event" ça correspond à "window.event" alors on a toujours accès à l'objet event même si on ne met rien en argument...

    ---> Alors pourquoi mettre un argument ?

    Sachant que j'y vois un inconvénient (tester sur VS Code ) : On a pas d'assistance (auto-complétion) sur le nom de l'argument même si c'est "event" par contre si on ne met pas d'argument ou bien si le nom de l'argument n'est pas "event" alors on a l'assistance (auto-complétion) sur l'objet "event" car là il le voit comme étant "window.event"...

    Merci.

  2. #2
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 714
    Points : 1 598
    Points
    1 598
    Par défaut
    jour

    de mémoire c'est pour la compatibilité avec les anciennes versions de ie (8 7 6) afin de creer un lien avec l'objet event. De nos jours c'est totalement inutile
    Plus vite encore plus vite toujours plus vite.

  3. #3
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Ok merci pour la confirmation.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    ---> Alors pourquoi mettre un argument ?
    simplement pour l'utiliser.

    Citation Envoyé par melka one
    De nos jours c'est totalement inutile
    cela va dépendre de ton contexte !

    Imaginons que l'on travaille par délégation, par exemple click sur une <table> pour changer la couleur d'une <td>. La récupération de l'élément cliqué ne sera possible qu'au travers de l'objet passé en paramètre à la fonction.

  5. #5
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Salut,

    Citation Envoyé par NoSmoking Voir le message
    simplement pour l'utiliser..
    Oui je sais bien mais comme je disais : "...ça correspond à "window.event" alors on a toujours accès à l'objet event même si on ne met rien en argument..."...

    Alors pourquoi ne pas juste utiliser "window.event" ou juste "event" ?

    Citation Envoyé par NoSmoking Voir le message

    Imaginons que l'on travaille par délégation, par exemple click sur une <table> pour changer la couleur d'une <td>. La récupération de l'élément cliqué ne sera possible qu'au travers de l'objet passé en paramètre à la fonction.
    N'est-elle pas possible avec "window.event" ou juste "event" ? On utiliserait par exemple la propriété "target"...

    EDIT : Ah oui ça marche sur Chrome mais pas sur FF * !!! J'ai testé en reprenant ce code : http://jsbin.com/vuguwapeqe/edit?html,js,output...

    * Quand je remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    selectLangue.onclick = function (event) {
     
        var target = event.target;
       ....
    .

    par ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    selectLangue.onclick = function () {
     
        var target = window.event.target;
       ....

  6. #6
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Bon je comprends pourquoi j'ai l'auto-complétion sur VSCode mais pas avec tern apparemment :

    https://developer.mozilla.org/en-US/...I/Window/event

    Non-standard
    This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

    window.event is a proprietary Microsoft Internet Explorer property which is only available while a DOM event handler is being called. Its value is the Event object currently being handled.

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Alors pourquoi ne pas juste utiliser "window.event" ou juste "event" ?
    Comme tu l'as découvert par toi même cette objet n'appartient pas à window dans FireFox par exemple, c'est un produit MicroSoft au départ qui a obligé d'écrire ce genre de code que tu as surement rencontré et que l'on rencontre encore d'ailleurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function action (event){
      event = event || window.event;
      var oElem = event.target || event.srcElement;
      // la suite du code
    }

  8. #8
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Oui effectivement j'ai vu plusieurs fois ces "ou logique"...

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

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