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] Event marche sous IE, pas FF


Sujet :

JavaScript

  1. #1
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut [POO] Event marche sous IE, pas FF
    Voici une petite fonction censé me faire apparaitre une popup dont le contenu se charge via ajax quand on click sur un truc (appelé donc par l'evenements onclick)... Elle est faite a base de bricolage a moi et d'extraits de tuto...

    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
    30
    31
    32
    33
    34
    	function 
     
    montre(id_inscription, suparam) {
    	{
     		GetId("curseur").innerHTML = '<center><img border="0" src="./img/sablier.gif"></center>';
    		if (navigator.appName!="Microsoft Internet Explorer") 
    		{ // Si on est pas sous IE
    			GetId("curseur").style.left=e.pageX + 5+"px";
    			GetId("curseur").style.top=e.pageY + 10+"px";
    		}
    		else 
    		{ 
    			if(document.documentElement.clientWidth>0) 
    			{
    				GetId("curseur").style.left=-380+event.x+document.documentElement.scrollLeft+"px";
    				GetId("curseur").style.top=10+event.y+document.documentElement.scrollTop+"px";
    			} 
    			else 
    			{
    				GetId("curseur").style.left=-380+event.x+document.body.scrollLeft+"px";
    				GetId("curseur").style.top=10+event.y+document.body.scrollTop+"px";
    			}
    		}
     
     
    	   GetId("curseur").style.visibility="visible"; 
    	   getXhr();
    		xhr.open("POST","./ajax_recap.php",false);
    		xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    		xhr.send("id_inscription="+id_inscription+suparam);
    		GetId("curseur").innerHTML = '<div style="text-align:right;"><a href="javascript:cache();" class="blue">{texte=18}</a></div>'+xhr.responseText;
    	  i=true;
     
    	}

    Elle marche très bien sous IE, mais pas firefox... le problème :
    e is undefined
    GetId("curseur").style.left=e.pageX + 5+"px";
    A la limite, ça, je peut le comprendre puisque e sort vraiment de nul part la ou event semble etre un objet pré-instancié sous IE... Ma question est donc, comment récupérer dans cette fonction et sous FireFox les propriétés de l'event qui a declanché l'appel ?

    En vous remerciant par avance

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    il te manque la méthode getId(...) solution :

    créer une méthode de ce type :

    function getId(MyElement){
    return document.getElementById(MyElement);
    }

    sois remplace getId par document.getElementById

    Voila

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    peux-tu nous montrer l'appel de ta fonction ?
    Pour moi tu dois passer l'évènement en argument...

    appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    montre(id_inscription, suparam, event)
    fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    montre(id_inscription, suparam, event)
    {
        var e = null;
        if (window.event)    //si IE
            e = window.event;
        else                      //si autre navigateur
            e = event;
     
        ....
    }
    tu peux aussi aller voir par là..

  4. #4
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    il te manque la méthode getId(...) solution :

    créer une méthode de ce type :

    function getId(MyElement){
    return document.getElementById(MyElement);
    }

    sois remplace getId par document.getElementById

    Voila
    Lol non, c'est juste que j'ai pas mis la fonction GetID() dans mon copier / coller, sinon, ça ne marcherai pas sous IE non plus :p

    Ziggotos, j'ai ajouter l'appel e = event dans la fonction et a l'appel, ça a l'air de bien fonctionner sous FF maintenant :p

    Dois-je comprendre que sous FF, l'objet event existe aussi mais n'est pas accessible dans les fonctions ? Décidement, le JS est vraiment une science obscure pour oim !

    Merci à vous !

  5. #5
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Sous IE l'objet event est un objet window (window.event)
    Par contre sous FF, event est un objet à part entière, qui ne dépend pas de window.

    Le mieux est de placer l'objet event dans les paramètres de la fonction appelée :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="button" value="Bouton" onclick="LaFonction(event)" />

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function LaFonction(ev)
    {
       alert(ev.type);
    }

    ce code fonctionne aussi bien sous IE que sous FF, il n'y a donc pas besoin de faire de tests dans la fonction.

  6. #6
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    Ok merci, super conseil ^^

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

Discussions similaires

  1. [ASP.NET/C#]Imagebutton marche sous Firefox pas sous IE
    Par nicO1077 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 27/05/2009, 10h30
  2. Réponses: 3
    Dernier message: 06/05/2009, 10h12
  3. Deploiement d'un War - marche sous eclipse pas "en vrai"
    Par yodutouf dans le forum Tomcat et TomEE
    Réponses: 5
    Dernier message: 15/01/2008, 10h07
  4. ligne de code marche sous FF pas sous IE6
    Par tremeur53 dans le forum Langage
    Réponses: 9
    Dernier message: 18/11/2007, 11h42
  5. [Systeme] Process marche sous windows, pas sous linux
    Par Zapan dans le forum Général Java
    Réponses: 12
    Dernier message: 14/01/2006, 13h06

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