Newsgroup: it.comp.lang.javascript
Titolo: Javascript e Netscape: ?

Ciao,
sono un utente sia di MSIE sia di MOZILLA (Netscape...)
Su 
www.bandamoribrentonico.it
 ho messo un piccolo script javascript
che visualizza e aggiorna un orologio a lancette analogico.
Con Explorer va a meraviglia, ma con Netscape non riesce ad accedere 
agli oggetti. In pratica io scrivo: table1.style.[...] e viene generato 
un errore del tipo "table1 is not defined", nonostante la tabella abbia 
sia id sia name impostato su "table1".
Come posso accedere a questo oggetto con Netscape?
Grazie mille (1000!)

 Come posso accedere a questo oggetto con Netscape?
seguendo gli standard, come ti dicevo...
Visto che lo script mi e' piaciuto, ho deciso di perderci un po' di
tempo e di correggerlo rendendolo un po' piu' crossbrowser, mantenendo
la tipologia di codice utilizzata:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html>
<head>
<title>Orologio</title>
</head>
<script language="javascript">
function tick()
{
 var now = new Date()
 var nowHours=now.getHours()
 var nowMinutes=now.getMinutes()
 var nowSeconds=now.getSeconds()
 if (nowHours>=12) {nowHours=nowHours-12}
 if (nowMinutes<12) {plusHours=0}
 if (nowMinutes>=12 && nowMinutes<24)
    {plusHours=90}
 if (nowMinutes>=24 && nowMinutes<36)
    {plusHours=180}
 if (nowMinutes>=36 && nowMinutes<48)
    {plusHours=270}
 if (nowMinutes>=48) {var plusHours=360}
 divOre.style.backgroundPosition =
        -(nowHours*90*5+plusHours)+"px";
 if (nowSeconds!=0) {
  divMinuti.style.backgroundPosition =
        -(nowMinutes*90)+"px";
 }
 divSecondi.style.backgroundPosition =
        -(nowSeconds*90)+"px";
 setTimeout("tick()", 1000);
}
window.onload=function()
{
 divOre=document.getElementById('ore');
 divMinuti=document.getElementById('minuti');
 divSecondi=document.getElementById('secondi');
 tick();
}
</script>
<body>
<div id="orologio"
style="width: 93px; height: 93px; background-image: url(clock.gif)">
  <div id="ore" style="background-image: url(ore.gif)">
    <div id="minuti" style="background-image: url(minuti.gif)">
      <div id="secondi"
style="width: 93px; height: 93px; background-image: url(secondi.gif)">
      </div>
    </div>
  </div>
</div>
</body>
</html>
L'ho semplificato abbandonando le tabelle che in questo caso erano
tutt'altro che utili...
Poi ho fatto un'inizializzazione all'onload della pagina che assegna i
vari riferimenti a delle variabili globali e poi fa partire lo script...
A parere mio ci sono ancora diverse migliorie da fare, ti butto li'
qualche spunto:
-    si puo' rendere ancora piu' cross browser utilizzando una funzione
cross-browser per prendere il riferimento degli oggetti (cerca con
google "ZER0 getRef") (poi ci sarebbe un'altra cosa ancora, evitare
l'uso di "backgroundPosition" rendendolo compatibile con NN4.x pero'
tutto sommato si puo' evitare...)
-    utilizzare l'operatore % per calcolare il resto -> cio' dovrebbe
evitarti degli if...
-    Aumentare l'uso delle variabili globali evitando la ridichiarazione
tutte le volte...
-    bisognerebbe fare in modo che non stia a calcolare tutte le volte
l'ora attuale assegnandole alle varie variabili, ma sfruttare il fatto
che la funzione viene richiamata ogni secondo e poi magari ogni minuto
controllare effettivamente l'ora corrente...
-...

 
Provo a vedere... poi ti faccio sapere
Bye!

 vedrete mai... muha ha ha :-)!
alla faccia del software libero! :)
-- 
artemis.alpeia();

 vedrete mai... muha ha ha :-)!
E tu pensi che interessi il tuo codice?
Se tutti fossero come te, questo NG non esisterebbe, e tu non avresti avuto
il disturbo di chiedere...
...ma tu pensa!!!
-- 
     my |#!load hamster.hsm                                       | in
   news |If(FileExists(HamPath+"40tude Dialog\dialog.exe))        | usb
   mail |  Execute ("40tude Dialog\dialog.exe" ,HamPath, 0,false) | pen
 reader |EndIf                                                    | drive

 ...ma tu pensa!!!
Io non so te, però io ho usato spesso pezzi di codice scritti da altri...
E poi adesso non per dire. Quello che vedi lo puoi copiare liberamente, 
solo non ti faccio sapere come lo ho generato. Non mi interessa niente 
se vuoi usare delle immagini perché ti piacciono, o il codice javascript 
perché vuoi metterlo nel tuo sito. Anzi! Ben venga! Però il programma 
che sta alla base non te lo rivelo. Perchè:
-potresti trovarci dei bug e usarli contro di me
-potresti rivenderlo come tuo (e accusarmi paradossalmente di aver 
rubato il tuo codice, che non è pubblico)
Inoltre io non ho venduto il sito in questione, e non ci ho guadagnato 
neanche mezzo euro: è il sito di una banda, cioè di un'associazione di 
volontari di cui io faccio parte.
Saluti,
Antonio