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] offsetTop sous IE7 marche ou marche pas ?


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 178
    Points : 56
    Points
    56
    Par défaut [DOM] offsetTop sous IE7 marche ou marche pas ?
    Bonjour,

    Je voudrais savoir s'il n'y a pas un problème de compatibilité entre IE et offsetTop car quand je teste le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function mafonction(id){
    if(document.getElementById){
    hover = document.getElementById(""+id+"");
    }else{
    hover = document.all[""+id+""];
    }
     
    var position = hover.offsetTop;
    alert('mon id = '+id+'');
    alert('ma position = '+position+'');
     
    }
    J'obtiens le résultat suivant pour id = 1 par exemple:

    FF => mon id = 1 puis ma position = 20 (ma div étant placé à 20px de hauteur)

    IE => mon id = 1 mais pour position j'ai tout le temps 0 ???

    Quelqu'un a t-il déjà eu le même soucies ou c'est un problème d'interprétation d'IE ?

    merci

  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
    Points : 4 835
    Points
    4 835
    Par défaut
    le code html total ?
    mais je pense que tu as une erreur sur la récupération de ton objet
    essaye avec document.getElementById() également sous IE

  3. #3
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 178
    Points : 56
    Points
    56
    Par défaut
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Scroller</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" >
    function changeclass(id){
    	alert('id'+id+'')
    		if(document.getElementById){
    			box = document.getElementById(""+id+"");
    		}else{
    			box = document.all[""+id+""];
    		}
     
    		var boxposition = box.offsetTop;
     
     
    		alert('boxposition'+boxposition+'')
    }
    </script> 
    </head>
     
    <body>
    <div id="contenu">
    <ul>
    <li><a  href="#"   id="1" name="itembox" class="itembox" onclick="changeclass(1)"><span class="itemlink">Item 1</span></a></li>
    <li><a  href="#"   id="2" name="itembox" class="itembox" onclick="changeclass(2)"><span class="itemlink">Item 2</span></a></li>
    </ul>
    </div>
    </body>
    </html>
    Marche sous FF sous IE boxposition = 0 chaque fois ???

  4. #4
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    As-tu envisagé que la position haute de ta div soit peut-être réellement égale à 0 ? ^^

  5. #5
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 178
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    As-tu envisagé que la position haute de ta div soit peut-être réellement égale à 0 ? ^^
    Non parce que j'ai bien mes deux liens

    Lien 1
    Lien 2

    Sous FF Lien 1 position = 0
    Sous FF Lien 2 position = 41


    Sous IE lien 1 position = 0
    Sous IE lien 2 position = aussi 0 px ce qui n'est pas normal

  6. #6
    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
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function changeclass(un_id){
    	alert('id : '+un_id);
    	var box = document.getElementById(un_id);
    	var boxposition = box.offsetTop;
    	while(box.offsetParent){
    		box = box.offsetParent;
    		boxposition += box.offsetTop;
    	}
    	alert('boxposition : '+boxposition);
    }

  7. #7
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 178
    Points : 56
    Points
    56
    Par défaut
    Donc c'est bien ce que je disais offsetTop n'est pas bien géré par IE car tu es obligé de passer par offsetParent. Du coup vu que la valeur du offsetParent de ma div contenueur n'est pas la même que celle du offsetTop de ma div du coup mon positionnement est chaque fois érroné.

    Quelle merde IE

    N'y a t il pas moyen de récupérer le offsetTop correctement ?

    Merci

  8. #8
    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
    Points : 4 835
    Points
    4 835
    Par défaut
    non tu n'as pas compris ...
    ici offsetParent représente le parent au niveau du dom !!!

    offsetTop ou left fonctionne PARFAITEMENT !!

  9. #9
    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
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par yamatoshi Voir le message
    Donc c'est bien ce que je disais offsetTop n'est pas bien géré par IE car tu es obligé de passer par offsetParent. Du coup vu que la valeur du offsetParent de ma div contenueur n'est pas la même que celle du offsetTop de ma div du coup mon positionnement est chaque fois érroné.

    Quelle merde IE

    N'y a t il pas moyen de récupérer le offsetTop correctement ?

    Merci
    Si :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function changeclass(un_id){
    	alert('id : '+un_id);
    	var box = document.getElementById(un_id);
    	var boxposition = box.offsetTop;
    	while(box.offsetParent){
    		box = box.offsetParent;
    		boxposition += box.offsetTop;
    	}
    	alert('boxposition : '+boxposition);
    }

  10. #10
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 178
    Points : 56
    Points
    56
    Par défaut
    Ben non Bovino

    Avec ta méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function changeclass(un_id){
    	alert('id : '+un_id);
    	var box = document.getElementById(un_id);
    	var boxposition = box.offsetTop;
    	while(box.offsetParent){
    		box = box.offsetParent;
    		boxposition += box.offsetTop;
    	}
    	alert('boxposition : '+boxposition);
    }
    Lorsque je test le lien 2 par exemple sous FF l'alerte me retourne boxposition=58

    Si j'enleve le while toujours sous FF l'alerte me donne boxposition=23

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function changeclass(un_id){
    	alert('id : '+un_id);
    	var box = document.getElementById(un_id);
    	var boxposition = box.offsetTop;
     
    	alert('boxposition : '+boxposition);
    }

Discussions similaires

  1. [DOM] textLength sous ie7
    Par Dark Ryus dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 03/07/2008, 10h40
  2. position d'un DIV flottant : OK sous IE7 et FF mais pas sous IE6
    Par arnaud_verlaine dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/12/2007, 14h34
  3. opacity marche sous IE7 et firefox, mais pas sous IE6
    Par maxfive7 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 06/08/2007, 15h03
  4. offsetTop sous IE7
    Par Oluha dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/02/2007, 12h21
  5. Menu déroulant sous IE7 ne marche pas
    Par Jo dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 07/02/2007, 16h54

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