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 :

[POO] Firefox & addEventListener


Sujet :

JavaScript

  1. #1
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut [POO] Firefox & addEventListener
    Bonjour tout le monde,

    je suis dans un projet d'un mini tableur en ligne. Je sais qu'il en existe déjà, mais aucun n'est adapté à ce cas précis (du moins je n'en ai pas trouvé), j'ai donc besoin de le développer.

    Mon code fonctionne bien sur IE 7, mais pas sur Firefox, et c'est là mon problème.

    - Adresse de la page
    - Adresse du fichier javascript


    Edit: Cf. message suivant : l'erreur vient de tagName, mais pourquoi ?


    Merci d'avance de votre aide !
    Zend PHP Certified Engineer, Certifié Symfony2
    blog : blog.lepine.pro
    Secrétaire de l'AFUP (Association des Utilisateurs de PHP)

  2. #2
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut
    Je viens de me rendre compte que c'est au niveau de getAttribute('tagName') que ça coince :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	if(!document.getElementById(idObj)) {return false; }
    	var Obj = document.getElementById(idObj);
    	var typeObj = Obj.getAttribute('tagName');
    J'ai essayé de n'exécuter ce script que sur click (pour vérifier que ça ne venait pas du fait que certains éléments n'étaient pas encore chargés), c'est pareil.

    Sous IE7, Obj.getAttribute('tagName') renvoie 'DIV' (par exemple), sous Opera et Firefox cela renvoie la valeur 'null'.

    Je ne trouve pas sur Google de contre-indications pour cette fonction, je ne vois pas trop où ça coince donc ...

    Vous avez une idée ?
    Zend PHP Certified Engineer, Certifié Symfony2
    blog : blog.lepine.pro
    Secrétaire de l'AFUP (Association des Utilisateurs de PHP)

  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 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 667
    Points
    66 667
    Billets dans le blog
    1
    Par défaut
    retournerait quoi ?
    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
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut
    Retourne exactement ce que je veux, merci bien !


    Maintenant, j'ai un autre problème, au niveau de la détection de l'événement. Je me sers de event.target pour identifier l'objet sur lequel a eu lieu l'événement. Event n'existe pas sous FF, il faut passer un paramètre lors de l'appel de la fonction.

    Je connais donc la théorie, mais je ne vois pas comment l'appliquer dans mon cas

    Voici les étapes de mon code (oui, je sais, ca pourrait être simplifié, mais j'ai besoin de tout décomposer en fonctions différentes pour les réutiliser)


    Code == ETAPE 1 == : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    onload : 
    initObj(idObj, 'mousedown','setModeSaisie');

    Code == ETAPE 2 == : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //
    // initialiser un objet
    // @param : string id objet
    // @param : string evenement
    // @param : function fonction appelée / action
    //
    function initObj (idObj,evenement,action) {
    ...
    addEvent(Obj,evenement,setModeSaisie);
    ...
    }

    Code == ETAPE 3 == : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    //
    // ajout d'une interception d'évenement
    // @param : string id objet
    // @param : string evenement
    // @param : function fonction appelée
    // trouvé sur developpez.net/forums
    //
    function addEvent(oElem, sEvType, fn){
    	return oElem.addEventListener?
      oElem.addEventListener(sEvType, fn, false):
      oElem.attachEvent?
         oElem.attachEvent('on' + sEvType, fn):
         oElem['on' + sEvType] = fn;
    }

    Code == ETAPE 4 == : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //
    // entrer en mode saisie
    // @return true / false
    //
    function setModeSaisie() {
    	var ObjDiv = getObjActif();
    ...
    }

    Code == ETAPE 5 == : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //
    // obtenir l'objet actif
    // @return object obj
    //
    function getObjActif () {
    	if(event.target) {
    		var Obj=event.target;
    	 } else {
    		var Obj=event.srcElement;
    	}
    	return Obj;
    }

    Voilà pour le processus. Je ne vois pas comment je peux intégrer un paramètre à ma fonction finale (getObjActif) puisque je passe par addeventlistener, et non pas un onclick directement dans le code HTML ...

    Vous pourriez m'aider là dessus aussi ?
    Zend PHP Certified Engineer, Certifié Symfony2
    blog : blog.lepine.pro
    Secrétaire de l'AFUP (Association des Utilisateurs de PHP)

  5. #5
    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 667
    Points
    66 667
    Billets dans le blog
    1
    Par défaut
    sur le même principe ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function initObj (idObj,evenement,action) {
    ...
     window[idObj+'.'+evenement]=setModeSaisie;
    ...
    }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    function initObj (idObj,evenement,action) {
    ...
     window[idObj+'.'+evenement]=function(){setModeSaisie};
    ...
    }
    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 !

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

Discussions similaires

  1. [POO] Récupérer une image sélectionnée sous Firefox
    Par Canopus dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/01/2009, 22h34
  2. [POO] code valable sous IE et non sous Firefox
    Par picoule dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 08/10/2008, 09h08
  3. [POO] getElementById javascript FireFox 2.0
    Par ouss dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 18/06/2007, 11h30
  4. [POO] objet "dictionnaire" sous Firefox
    Par spikelille dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/07/2006, 17h04
  5. [POO] $_FILES['type'] different sous IE ou Firefox
    Par ToxiZz dans le forum Langage
    Réponses: 4
    Dernier message: 15/01/2006, 09h57

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