Newsgroup: it.comp.lang.javascript
Titolo: REQ - Mi controllate questo script?

Salve a tutto il NG.
Lo script che segue mi serve per randomizzare il caricamento delle
pagine, ma purtroppo non mi funziona correttamente. La cosa strana e'
che funziona a "singhiozzi", una volta si e due no.
Vi prego, aiutatemi!  ;-)
-----------------
ecco la sorgente della pagina di transizione:
<html>
<head><title>Please Wait</title>
</head>
<body bgcolor='#FFFFFF' onLoad='go()'>
<script language='JavaScript'>
<!-- Hide this script from old browsers --
/*
 
*/
var links = new Array(4)
links[0] = 'menu1.htm'
links[1] = 'menu2.htm'
links[2] = 'menu3.htm'
links[3] = 'menu4.htm'
function go() {
	var a = Math.random() + ''
	var i = a.charAt(3)
	location = links[i]
}
// -- End Hiding Here -->
</script>
</body></html>
----------------------
Ciao e grazie a tutti!

 ha scritto nel messaggio
news:38CF5AEC...@opra.it...


Occorre modificare lo script se ti servono piu' di dieci voci (0-9)
La funzione "go"  potrebbe essere migliorata e ottimizzata in questo
modo, IMVHO:
<script language="JavaScript">
 
var links = new
Array("menu1.htm","menu2.htm","menu3.htm","menu4.htm");
 
  function go() {  	
	var i = Math.round( Math.random() * (links.length-1) );
        self.location.href = links[i];
  }
</script>
--
C'ya, 
  |
  |
'/|\'
\\O//
//"\\
'\ /'
________________________________________TagLine___
"Quanti Angeli danzano sulla punta di uno spillo?"

ZER0 wrote:
Power Ring wrote:
...cut...
grazie ad entrambi!
Per Power Ring: sullo script che mi hai corretto andava aggiunto anche 
onLoad='go()'  nel tag body... ;-)
Ciao e grazie ancora!
Luca

 ha scritto nel messaggio
news:38CF9D6B...@opra.it...


PS: eccellente intervento ZERO :))
Grazie. ;)


 PS: eccellente intervento ZERO :))
ed io vi ringrazio entrambi, ancora una volta  ;-)

 cerchero' un'altra donna dentro ai sogni di Tarzan...

 > cerchero' un'altra donna dentro ai sogni di Tarzan...
cos'era? Elio e le storie tese?

cos'era? Elio e le storie tese?
Naaa... Piu' anziano: Bennato prima maniera (Fandango)


wow, non credevo!  :-)
Si, pero' stai attento al metodo che usi.
Finche' si tratta di funzioni come la tua ("go()"), puo' essere
relativamente indifferente.
Ma se incominci a codare qualcosa in dynamic HTML, usa maggior occhio
di riguardo: Soprattutto quando fai riferimento a degli oggetti.


 di riguardo: Soprattutto quando fai riferimento a degli oggetti.
in teoria quindi, i rischi si corrono col DHTML, e meno col JavaScript?
Ciao!


wrote:

Come penso tu sappia, il dHTML non e' altro che l'uso di Javascript,
DOM e CSS.
Gia' si possono riscontrare delle differenze nell'implementazione del
Javascript da browser diversi (IE, NS); ma quando poi si tratta di DOM
e CSS ci si addentra in un mondo in cui difficilmente avrai codice
compatibile da piu' browser, senza piccoli (?) accorgimenti.
Sostanzialmente, piu' "tecnologie" (se mi passate il termine) usi per
sviluppare siti, piu' aumenti potenzialmente gli errori all'interno
dello stesso, e contemporaneamente aumenti la possibile
incompatibilita' tra browser diversi.
Ed il dHTML e' appunto questo, piu' "tecnologie" usate insieme, in
stretta "collaborazione" l'una con l'altra.
per tornare all'argomento di partenza, se usi il Javascript solo per
avere funzioni particolari tipo la tua "go()" non hai molti problemi.
Ma se tu volessi, all'interno della tua funzione, fare riferimento ad
un layer, non puoi mettere la tua funzione "ovunque" nel codice, come
nel caso precedente.
Perche' se la metti PRIMA che il browser abbia effettivamente
instanziato l'oggetto layer, ovviamente genera un errore.
Generalmente, quindi, il codice in questione viene buttato dentro
l'onLoad della pagina.


 l'onLoad della pagina.
Mi permetto di aggiungere una postilla:
il codice in questo caso viene, come giustamente spiegato da ZERO, posto
nell'onLoad anche perche' i browsers che supportano il dhtml riconoscono
anche l'onLoad.
Se invece non si tratta di sviluppare dhtml, come nel tuo caso, torno a
difendere la mia scelta di non utilizzare l'onLoad, in quanto alcuni vecchi
browser supportano il js ma non riconoscono l'onLoad. Questa eventualita'
non e' poi cosi' remota, ultimamente mi e' infatti capitato di imbattermi in
un pc con IE2 (sic) installato. Questo e' un caso che non interessa la
discussione in quanto IE2 non supporta il js, ma questo per dire che il
fatto che IE4+ e NN4+ siano i browsers piu' diffusi non significa che tutti
li utilizzino e che non ci sia qualcuno che utilizzi altre versioni o altri
browsers. Sarebbe un peccato precludersi la possibilita' di svolgere il tuo
script in un vecchio browser js compatibile solo perche' si e' posto la 
f.ne
go() in onLoad.
Concludendo:
personalmente richiamo sempre le funzioni da svolgere durante il caricamento
della pagina direttamente all'interno dello script, se invece sviluppo dhtml
posso scegliere di utilizzare l'onLoad, ma solitamente non lo faccio per
adoperare sempre uno stesso metodo.
Non sono d'accordo quindi con Marco (scusa...non voglio essere polemico)
nella scelta di porre script all'interno del body tag, non solo per quanto
ho detto prima e per quanto ha giustamente fatto notare ZERO, ma anche per
mantenere l'integrita' del sorgente ed agevolare successive modifiche,
riponendo tutto il codice js o all'interno del head tag o in un file
esterno.
Cia'

 l'onLoad della pagina.
perfetto grazie 1K!!!  ;-)
Luca

 esterno.
ma scusate la domanda forse stupida:
Ma non si risolverebbe ogni dubbio semplicemente mettendo "oltre"
l'onLoad il semplice script dopo l'apertura del body?
Ci sarebbero conflitti, o cosa?
Ciao,
Luca

perfetto grazie 1K!!!  ;-)
De nada. Spero di essere stato chiaro, e di esserti stato di aiuto.


l'onLoad il semplice script dopo l'apertura del body?
Non credo di aver afferrato la domanda.
Cmq la maggior parte delle instanze di un oggetto, vengono create dopo
che la pagina e' COMPLETAMENTE caricata sul client.
Inoltre pensa ad una pagina molto pesante.. Ci sarebbe il rischio che
il client esegua pezzi di script prima che tutta la pagina con tutti
gli elementi vengano caricati.


 De nada. Spero di essere stato chiaro, e di esserti stato di aiuto.
davvero molto, grazie ancora!  :-)
Ciao!

 gli elementi vengano caricati.
beh, credo sia possibile in effetti... pero' se lo script e' corto come
quello da me inizialmente proposto, non credo ci siano rischi (se poi
uno riesce a minimizzarlo ancora meglio, come hai fatto tu, allora.... 
:-) )
Ciao!

:-) )
Se i problemi sono quelli che ti ho detto, se ne consegue che non e'
la lunghezza dello script ad essere un problema, anzi!
Il problema e' proprio che lo script viene eseguito troppo presto e
troppo velocemente, al limite. ;)
