Utilitaires
Jeux
Paroles
Textes
Forum
Livre d'or
Index des forums 

Index des forums


Dossier 

Base de connaissances


Dossier Groupe "Internet / Javascript"
Se connecter
Répondre
Trouver un message :
Rechercher
Jamais inscrit sur ce forum
Identifiant (pseudo) :
Mot de passe :
Courriel :
Ville/pays (facultatif) :
Attention, si vous utilisez Hotmail/Live, vous risquez de ne pas pouvoir vous inscrire car ce fournisseur bloque exagérément les messages.
M'inscrire
Déjà inscrit sur ce forum
Identifiant :
Mot de passe :
Me connecter
Déjà inscrit mais sans mot de passe
Vous avez perdu votre mot de passe ?
Vous pouvez en recevoir un autre en indiquant ci-dessous l'adresse du courriel utilisé lors de l'inscription.
Mon courriel :
Envoyer courriel

Coordonnées absolues d'un objet


Renvoyer les coordonnées absolues d'un objet Javascript n'est pas forcément évident : il ne faut pas se contenter d'ajouter les valeurs haut et gauche des objets de niveaux supérieurs, il faut aussi ajouter les valeurs des ascenseurs et géré une différence de positionnement entre Firefox/Opéra et Internet Explorer.

Beaucoup de scripts sur Internet renvoient ainsi une position absolue erronée car ils ne prennent pas en compte tous ces points. Le script ci-dessous en tient compte à l'exception des Padding et Margin.

A noter que IE6 renvoie un objet FORM lorsque la page contient un formulaire. Il ne faut pas tenir compte des coordonnées de cet objet.


var agent = navigator.userAgent.toLowerCase();
var ie = ((agent.indexOf("msie") != -1) &&    (agent.indexOf("opera") == -1));

// Renvoie la position absolue d'un élément
function objet_PositionAbsolue(obj)
    {  
    var pos = new Object();  
    pos.gauche = 0;
    pos.haut = 0;  
    if (obj !== null)
        {  
        pos.gauche = obj.offsetLeft;  
        pos.haut = obj.offsetTop;  
          
        var offParent = obj.offsetParent;  
        var nodParent = obj.parentNode;  
  
        while (offParent !== null)
            {  
            if (offParent.nodeName !='FORM') // IE6
                {
                pos.gauche += offParent.offsetLeft;  
                pos.haut += offParent.offsetTop;  
  
                if (offParent != document.body && offParent != document.documentElement)
                    {  
                    pos.gauche -= offParent.scrollLeft;  
                    pos.haut -= offParent.scrollTop;  
                    }  
                // pour autre que IE
                if (!ie)
                    {  
                    while (offParent != nodParent && nodParent !== null)
                        {  
                        pos.gauche -= nodParent.scrollLeft;  
                        pos.haut -= nodParent.scrollTop;  
                      
                        nodParent = nodParent.parentNode;  
                        }      
                    }  

                }
            // Objet suivant
            nodParent = offParent.parentNode;  
            offParent = offParent.offsetParent;  
            
            
            }  
        }  
    return pos;  
    }      

el_juky [Administrateur] le 24/01/2009

Citer
© Eric Quillévéré (janvier 2000 - mai 2012) Inspiré d'un design de Zwatla + Lagouache
Valid CSS! Valid HTML 4.01 Transitional