11491 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
J'aimerais positionner une div juste en dessous d'une image
Ne connaissant pas à l'avance la position de l'image, je voudrais la récupérer en javascript. J'ai essayé plusieurs code mais sans succes.
Celui qui s'approche le plus de ce que je voudrais est :

 function FindPosX(AObject)
 {   
   return AObject.offsetLeft;
 }
 function FindPosY(AObject)
 {
   return AObject.offsetTop;
 }


ça marche nickel sous FireFox quelque soit les cas de figures que j'ai pu rencontrer (images dans div, liste, table,...) mais sous IE le positionnement en largeur est bon mais pas celui en hauteur Smiley fache

Quelqu'un aurait une solution miracle qui marche tout le temps et sous IE/FireFox ?

Merci
Modifié le 01 Dec 2004 - 11:09
Poire a écrit :
Pas de réponse ? Smiley bawling
à défaut je prendrais aussi les coordonées de la souris

pour la position de la souris c'est bon j'ai trouvé Smiley smile

event.clientX et event.clientY uniquement disponible dans les événements, pour l'utiliser dans une fonction appelée dans un événement il faut passer event en paramètre Smiley lol

par contre si qq1 sait pour la position d'un objet je suis toujours intéressé

@+

function FindPos(AObject)
{
    var posX = 0, posY = 0;
    
    do
    {
        posX += AObject.offsetLeft;
        posY += AObject.offsetTop;
        AObject = AObject.offsetParent;
    }
    while( AObject != null );

    var pos = [];
    pos['X'] = posX;
    pos['Y'] = posY;
    
    return pos;
}


La raison pour laquelle votre code fonctionnait sous firefox est que firefox donne directement "l'offset" par rapport à l'élément body (et le offsetParent de tout élément référence donc l'élément body) au lieu de le donner par rapport à l'élément parent.
Ça devrait être bon avec le code que j'ai donné.
Modifié le 04 Dec 2004 - 11:29
Bobe a écrit :

function FindPos(AObject)
{
    var posX = 0, posY = 0;
    
    do
    {
        posX += AObject.offsetLeft;
        posY += AObject.offsetTop;
        AObject = AObject.offsetParent;
    }
    while( AObject != null );

    var pos = [];
    pos['X'] = posX;
    pos['Y'] = posY;
    
    return pos;
}


La raison pour laquelle votre code fonctionnait sous firefox est que firefox donne directement "l'offset" par rapport à l'élément body (et le offsetParent de tout élément référence donc l'élément body) au lieu de le donner par rapport à l'élément parent.
Ça devrait être bon avec le code que j'ai donné.


Merci, je testerais mais pas avant lundi prochain... je suis en déplacement la semaine prochaine... débarassé de moi pour une semaine Smiley cligne