Newsgroup: it.comp.lang.javascript
Titolo: Posizione Layer - Per Cristiano larghi

Ciao
il tuo codice funziona solo se l'immagine cui prendere la posizione di
riferimento è posizionata in un numero limitato di tabelle annidate.
ti allego il codice e capirai meglio.
<html><head>
<script type="text/JavaScript" language="JavaScript">
window.GetAbsTop=function(sender) {
  var ris=0;
  if(!sender.offsetParent) return 0;
  ris=sender.offsetTop+GetAbsTop(sender.offsetParent);
  return ris;
 } 
 window.GetAbsLeft=function(sender) {
  var ris=0;
  if(!sender.offsetParent) return 0;
  ris=sender.offsetLeft+GetAbsLeft(sender.offsetParent);
  return ris;
 } //GetAbsLeft
//Per mozilla
function Mozilla(cat){
document.getElementById('layer'+cat).style.left=document['img'+cat].x+"px";
document.getElementById('layer'+cat).style.top=document['img'+cat].y+"px";
	document.getElementById('layer'+cat).style.visibility="visible";
}
//Per Internet explorer
function IE(cat){
document.getElementById('layer'+cat).style.top=GetAbsTop(document.images['img'+cat]);
document.getElementById('layer'+cat).style.left=GetAbsLeft(document.images['img'+cat]);
  document.getElementById('layer'+cat).style.visibility='visible';
}
</script></head>
<body>
<a href="javascript:Mozilla('1')">Mozilla</a>
<br>
<a href="javascript:IE('1')">Internet Explorer</a>
<br>
<div style="position: absolute; width: 106px; z-index: 1; overflow:
hidden; background-color: silver; visibility: visible; left: 732px; top:
37px;" name="layer1" id="layer1">
  <table cellpadding="0" cellspacing="0" border="0" width="104"
align="center">
	<tbody><tr> 
		<td>Contenuto layer</td>
	</tr>
 </tbody></table>
</div>
<table width="973" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td bgcolor="#0000FF"><table width="872" border="0" cellpadding="0"
cellspacing="0" bgcolor="#996666">
        <tr>
          <td><table width="805" border="0" cellpadding="0"
cellspacing="0" bgcolor="#999999">
              <tr>
                <td><table width="668" border="0" cellpadding="0"
cellspacing="0" bgcolor="#FFFF00">
                    <tr>
                      <td><table width="626" border="0" cellpadding="0"
cellspacing="0" bgcolor="#00FF00">
                          <tr>
                            <td width="626"><table width="500"
border="0" cellpadding="0" cellspacing="0" bgcolor="#33CCCC">
                                <tr>
                                  <td><table width="100" border="0"
align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
                                      <tbody>
                                        <tr> 
                                          <td>Questa tabella può essere
in qualsiasi
                                            punto della pagina</td>
                                        </tr>
                                        <tr> 
                                          <td height="1"><img id="img1"
name="img1" src="Caputo_files/under.gif"></td>
                                        </tr>
                                      </tbody>
                                    </table></td>
                                </tr>
                              </table></td>
                          </tr>
                        </table></td>
                    </tr>
                  </table></td>
              </tr>
            </table></td>
        </tr>
      </table></td>
  </tr>
</table>
</body></html>
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 function IE(cat){
Per IE (5 o superiori) puoi fare semplicemente cosi', lasciando stare
funzioni ricorsive:
function IE(cat){
	var r=document.images['img'+cat].getClientRects()[0];
	document.getElementById('layer'+cat).style.top=r.top+"px";
	document.getElementById('layer'+cat).style.left=r.left+"px";
	document.getElementById('layer'+cat).style.visibility='visible';
};
E per unificare Gecko/IE, potresti fare un banale object checking:
var 
	oImg=document.images["img"+cat],
	oStyle=document.getElementById("layer"+cat).style,
	x=0,y=0;
 
if (typeof oImg.x!="undefined" && typeof oImg.y!="undefined"){
	x=oImg.x;
	y=oImg.y;
}else if (typeof oImg.getClientRects!="undefined"){
	var r=oImg.getClientRects()[0];
	x=r.left;
	y=r.top;
}
/* in caso nessuna delle due condizioni si verificasse, i valori x/y
restano ovvviamente a zero, volendo puoi gestire quest'eccezione */
 
oStyle.top=y+"px";
oStyle.left=x+"px";
oStyle.visibility='visible';
-- 
ZER0://coder.gfxer.web-designer/
~ "La prova che l'universo ha deciso di ignorarti e' quando non ricevi piu'
e-mail neppure dagli spammer."
on air ~ "Maki Kimura - Beyond The Bounds"

molte grazie.
Ciao
