scusate, ma non riesco a capire cosa trova di sbagliato Firefox in questa istruzione per posizionare un div:
document.getElementById("contenitore").style.top=1 00;
(con IE6 funziona)
scusate, ma non riesco a capire cosa trova di sbagliato Firefox in questa istruzione per posizionare un div:
document.getElementById("contenitore").style.top=1 00;
(con IE6 funziona)
---------------
manos arriba
esto es un robo
---------------
http://www.maxesilvia.it
document.getElementById("contenitore").style.top=1 00 + 'px';
niente da fare
IE6 funziona, ma FireFox non ne vuol sapere
del resto trova proprio un errore, perchè il window.alert che gli ho piazzato dopo non lo esegue
cmq grazie![]()
---------------
manos arriba
esto es un robo
---------------
http://www.maxesilvia.it
Posta qualcosa di piu` del tuo codice.
Il <div> a cui lo applichi deve essere definito con:
<div id="contenitore">
e il CSS relativo dovrebbe avere uno dei seguenti:
position:absolute;
position:relative;
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
eccolo (non volevo annoiarvi con sbrodolate di codice)
Questa è lo script che sto testando con IE6 e FF
l'istruzione incriminata è stata sopra riportata in versione semplificata per vedere dove effettivamente FF trovava intoppi
Questo script in realtà è un "modellino" che mi son fatto ad hoc per provare le istruzioni che poi, una volta testate, inserirò nel sito vero e proprio.codice:<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"> <meta content="MSHTML 6.00.2800.1479" name=GENERATOR> <script language=JavaScript type=text/javascript> ... function inizializza() { if (document.all) { documento="document.all"; parA="[\""; parB="\"]"; alto=".style.top"; sinistra=".style.left"; versione="seminuova"; } else if (document.layers) { documento="document.layers"; parA="[\""; parB="\"]"; alto=".top"; sinistra=".left"; versione="vecchia"; } if (document.getElementById) { documento="document.getElementById"; parA="(\""; parB="\")"; alto=".style.top"; sinistra=".style.left"; versione="nuova"; } inizializza() var bbx = 0; var bby = 0; function centra(livello,corpox,corpoy) { if (versione == "nuova") { b_toty = document.documentElement.offsetHeight; b_totx = document.documentElement.offsetWidth; } else if (versione == "seminuova") { b_toty = document.body.offsetHeight; b_totx = document.body.offsetWidth; } else if (versione == "vecchia") { b_toty = window.innerHeight; b_totx = window.innerWidth; } bbx=Math.round((b_totx-corpox)/2); bby=Math.round((b_toty-corpoy)/2); eval(documento+parA+livello+parB+alto+"="+bby+";"); eval(documento+parA+livello+parB+sinistra+"="+bbx+";"); } // --> </script> <style type="text/css"> <!-- body { background-color: #000000; font-family: Georgia, "Times New Roman", Times, serif; margin: 0px; padding: 0px; border: 0px none; } #Contenitore { top:0px; left:0px; width:589px; height:420px; position:absolute; background-color: #FFFFFF; } #Livello1 { width:60px; height:190px; left:350px; top:70px; position:absolute; z-index:1; visibility:visible; background-color: #666666; } --> </style> </head> <body onLoad="centra("contenitore",588,420)"; onResize="centra("contenitore",588,420)";> <div id=Contenitore> <div id="Livello1"> </div> </div> ...........
Edit: Ho modificato il messaggio aggiungendo i marcatori [ c o d e ] per visualizzare meglio. Mich_
---------------
manos arriba
esto es un robo
---------------
http://www.maxesilvia.it
risultato
(IE6 = ok, FF = ko)
---------------
manos arriba
esto es un robo
---------------
http://www.maxesilvia.it
eval() e` decisamente da evitare.
Comunque tu usi tre script diversi a seconda del browser, e questo puo` fare la differenza.
Non vedo la graffa di chiusura della funzione inizializza()
Dentro le parentesi di getElementById() ci vanno virgolette o apici, se non si tratta di parametro. E nel tuo caso, usando eval() ce le devi mettere.
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
ok la graffa di chiusura nello script c'era, l'ho dimenticata nel post
gli apici attorno al nome "documento" sono già contenuti, insieme alla parentesi, nei campi parA e parB
è possibile che non gli piaccia il fomato dei valori bby e bbx che è numerico, e che magari lo voglia in formato "testo"???
tra l'altro che differenza c'è tra usare Math.round o invece ParseInt ???
perchè eval() è da evitare?
---------------
manos arriba
esto es un robo
---------------
http://www.maxesilvia.it
con Math.round 1.5 diventa 2
con parseInt diventa 1
(senza contare che "100px" diventa 100)
l' eval e' oneroso, nel 90% dei casi inutile e ridondante
in futuro non sara' supportato
dov e' nel tuo script il +'px' che dovrebbe permettergli di funzionare in FF?
eval(documento+parA+livello+parB+alto+"="+bby+"\+\ 'px\'"+";");
eval(documento+parA+livello+parB+sinistra+"="+bbx+ "\+\'px\'"+";");
IE6 funziona
FireFox no![]()
![]()
![]()
ho provato anche dando l'istruzione diretta (senza eval())
---------------
manos arriba
esto es un robo
---------------
http://www.maxesilvia.it