Vorrei mettere all'attenzione degli utenti del forum, un caso di interpretazione di codice javascript un pò "singolare" da parte di IE.
Nello specifico io ho questa funzione:


<script language="javascript">
function P7_Snap() { //v2.62 by PVII
var x,y,ox,bx,oy,p,tx,a,b,k,d,da,e,el,args=P7_Snap.arg uments;a=parseInt(a);
for (k=0; k<(args.length-3); k+=4)
if ((g=MM_findObj(args[k]))!=null) {
el=eval(MM_findObj(args[k+1]));
a=parseInt(args[k+2]);b=parseInt(args[k+3]);
x=0;y=0;ox=0;oy=0;p="";tx=1;da="document.all['"+args[k]+"']";
if(document.getElementById) {
d="document.getElementsByName('"+args[k]+"')[0]";
if(!eval(d)) {d="document.getElementById('"+args[k]+"')";if(!eval(d)) {d=da;}}
}else if(document.all) {d=da;}
if (document.all || document.getElementById) {
while (tx==1) {p+=".offsetParent";
if(eval(d+p)) {x+=parseInt(eval(d+p+".offsetLeft"));y+=parseInt( eval(d+p+".offsetTop"));
}else{tx=0;}}
ox=parseInt(g.offsetLeft);oy=parseInt(g.offsetTop) ;var tw=x+ox+y+oy;
if(tw==0 || (navigator.appVersion.indexOf("MSIE 4")>-1 && navigator.appVersion.indexOf("Mac")>-1)) {
ox=0;oy=0;if(g.style.left){x=parseInt(g.style.left );y=parseInt(g.style.top);
}else{var w1=parseInt(el.style.width);bx=(a<0)?-5-w1:-10;
a=(Math.abs(a)<1000)?0:a;b=(Math.abs(b)<1000)?0:b;
x=document.body.scrollLeft + event.clientX + bx;
y=document.body.scrollTop + event.clientY;}}
}else if (document.layers) {x=g.x;y=g.y;var q0=document.layers,dd="";
for(var s=0;s<q0.length;s++) {dd='document.'+q0[s].name;
if(eval(dd+'.document.'+args[k])) {x+=eval(dd+'.left');y+=eval(dd+'.top');break;}}}
if(el) {e=(document.layers)?el:el.style;
var xx=parseInt(x+ox+a),yy=parseInt(y+oy+b);
if(navigator.appName=="Netscape" && parseInt(navigator.appVersion)>4){xx+="px";yy+="px ";}
if(navigator.appVersion.indexOf("MSIE 5")>-1 && navigator.appVersion.indexOf("Mac")>-1){
xx+=parseInt(document.body.leftMargin);yy+=parseIn t(document.body.topMargin);
xx+="px";yy+="px";}e.left=xx;e.top=yy;}}
}
</script>



inserita nel tag head della pagina, che mi permette di posizionare un livello sopra un'immagine qualsiasi.
associo quindi all'immagine del caso l'evento
onLoad="P7_Snap('snap','nomelayer',0,0)"
dove snap è l'ID dato all'immagine, nomelayer l'ID del livello da incollare all'immagine e 0 / 0 il posizionamento del livello in pixel in relazione all'immagine.
Arrivo al dunque
La cosa strana e che così la funzione non funziona (scusate il gioco di parole) o meglio impostando la pagina che la contiene su IIS o PWS
tutto va regolarmente, mentre portandola su un server NT mi restituisce un errore di debug che scompare con un semplice aggiornamento da browser.
Se invece l'evento lo associo al tag body della pagina il javascript funziona anche senza aggiornare la pagina.

Domanda:
:master: :master:
Perchè tutto ciò ?
e soprattutto, perchè una pagina scritta interamente in linguaggio lato client viene interpretata in maniera differente dal browser a seconda del server dove risiede ?


Spero che qualcuno possa rispondermi
Grazie