eplanet
Messages postés112Date d'inscriptiondimanche 6 juin 2004StatutMembreDernière intervention19 septembre 2007
-
7 déc. 2006 à 20:35
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 2011
-
10 déc. 2006 à 16:46
Bonjour à tous,
J'essaie d'écrire script qui insère une image dans le document HTML et qui récupère ensuite sa position absolue.
Voici mon script (simplifié) :
var zone = document.getElementById("zone");
zone.innerHTML = "";
var barre = document.getElementById("barre");
var x = barre.style.left;
Lorsque je tente d'afficher x, rien ne s'affiche à l'écran. Apparemment, barre.style.left n'est défini que lorsque je rajoute un "style='position:absolute; left:10px;'" dans la balise de l'image. Mais étant donné qu'à priori je ne sais pas où sera placée l'image, cette solution ne me convient pas...
Est-ce que quelqu'un a une solution ? (qui marche sur Firefox et IE si possible)
Merci d'avance
Seulement cette fonction semble marcher de facon incorrecte sur IE (pas de problème sur Firefox) lorsqu'il y a un ascenseur horizontal. Quelqu'un saurait-il comment remédier à ce problème ?
eplanet
Messages postés112Date d'inscriptiondimanche 6 juin 2004StatutMembreDernière intervention19 septembre 2007 7 déc. 2006 à 22:51
En fait je crois que le problème vient du fait que IE et Firefox ne gère pas de la même manière offsetLeft : je centre une image dans ma fenêtre, lorsque je redimensionne cette fenetre (les marges de part et d'autre de l'image varient) et offsetLeft varie en conséquence sur Firefox alors qu'il reste constant sur IE...
vincemail
Messages postés79Date d'inscriptionmardi 29 juillet 2003StatutMembreDernière intervention 8 décembre 2006 8 déc. 2006 à 13:48
Effectivement, ton code donne les même résultats, mais pas le suivant : (sous IE seulement évidemment...)
<html>
<head>
<script type="text/javascript">
function leftElement(e){
return ((e && leftElement != leftElement.caller)?e.offsetLeft:0) + ((e && e.offsetParent)?e.offsetParent.offsetLeft + leftElement(e.offsetParent):0);
}
//------------------------
function ObjGetPosX( div_){
var Obj = document.getElementById( div_);
if( Obj) return( Obj.offsetLeft);
return( null);
}
//-----------
function Go(){
var zone = document.getElementById("zone");
zone.innerHTML = "";
var barre = document.getElementById("barre");
var x = leftElement( barre);
document.getElementById("info").innerHTML ="PosX = " +x;
x = ObjGetPosX( 'barre');
document.getElementById("info").innerHTML +="
PosX = " +x;
}
</script>
</head>
<center>
[javascript:Go() Go]
<!-- div parent ajouté ici -->
</center>
</html>
J'ai juste ajouté un élément parent au div "zone". Je pense que offsetLeft rend une position relative par rapport à l'élément parent sous IE et non par rapport au body, d'où la necessité de la fonction récursive qui calcule le décalage à gauche pour tous les parents successivement...
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 10 déc. 2006 à 16:46
B
onjour...
Dans le cas d'imbrication de div, ou autre, la fonction de GhislainLavoie est bien la plus compatible car elle remonte au body...
A utiiser sans modération dans tous les cas.
;0)