Newsgroup: it.comp.lang.javascript
Titolo: Aprire una lista di url

Salve, per un computer in una vetrina avrei bisogno di aprire una serie di
circa 10 url ad intervalli di 30 secondi l'una dall'altra. Qualcuno ha idea
di come si puň fare in javascript ?
Grazie
Fabio

 di come si può fare in javascript ?
aprire dove? cambiare pagina ogni 30 secondi o aprire 10 popup?
in generale puoi eseguire ogni tot secondi con setTimeout o setInterval,
dipende dal contesto:
 
http://www.mozilla.org/docs/dom/domref/dom_window_ref115.html
 
http://www.mozilla.org/docs/dom/domref/dom_window_ref114.html
se sono popup ti basta questo, se sono invece pagine diverse o carichi in
un frame, oppure per ogni pagina dovrai mettere un setTimeout per la
prossima (in tal caso esiste anche il tag meta refresh).
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

 
Mi spiego meglio :
La finestra è una sola e deve restare in primo piano.
I siti scorrono in sequenza sulla stessa finestra come se al PC ci fosse 
qualcuno che sta navigando e scive manualmente l'indirizzo; terminata la 
sequenza si ricomincia.
Quello che volevo fare è un file html sul pc che una volta aperto mi dia 
inizio alla sequenza con le relative pause.
Purtroppo non ho dimestichezza col javascript e non so se è fattibile.
Grazie
Fabio

 sequenza si ricomincia.
mi vengono in mente 2 strade:
 con un iframe. Carichi una pagina "nascosta" nell'iframe e da lì governi
l'altro frame (quello che si vede). Ma così perdi compatibilità
xhtml-strict. 
 Altrimenti sei costretto a indicare in ogni pagina qual è la seguente da
aprire; in tal caso non ti serve javascript, ti basta un tag meta refresh:
http://www.google.it/search?sourceid=navclient&hl=it&ie=UTF-8&rls=GGLG,GGLG:2005-48,GGLG:it&q=tag+meta+refresh
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

 sequenza si ricomincia.
Credo di capire che i siti da aprire non sono "tuoi", vero? Cioč, hai un
elenco di siti vari e vuoi che si aprano ciclicamente...
Se č cosě, potresti fare una cosa del genere (scritta in fretta,
sicuramente migliorabile);
<!-- NEL TAG HEAD -->
<script type="text/javascript">
var aUrl=["url1","url2","url3"]; //quanti se ne vuole!
var currentUrl=null, w=null, timerId=null, browsing=false;
function startBrowsing() {
	if (!browsing) {
		browsing=true;
		currentUrl=aUrl.length;
		if (w && !w.closed) w.close();
		w=window.open();
		loadUrl();
		timerId=setInterval("loadUrl()",5000);
	};
	return false;
};
function stopBrowsing() {
	if (browsing && w && !w.closed) {
		w.close();
		clearInterval(timerId);
		browsing=false;
	};
	return false;
};
function loadUrl() {
	currentUrl+=1;
	if (currentUrl>=aUrl.length) currentUrl=0;
	w.location.href=aUrl[currentUrl];
};
</script>
<!-- NEL DOCUMENTO HTML -->
<a href="#" onclick="return startBrowsing()">start</a><br />
<a href="#" onclick="return stopBrowsing()">stop</a>
-- 
Nando [?]
Ex-Apostolo della Ex-Prova

In data Wed, 25 Jan 2006 13:26:51 +0100, Nando ha scritto:
[STRACUT]
dal messaggio a me sembra che chieda esplicitamente di restare nella stessa
finestra ...
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 finestra ...
Infatti può fare lo stesso giochetto in un iframe...
Avevo letto male il tuo post, mi ero perso l'iframe :)


 Infatti può fare lo stesso giochetto in un iframe...
'nsomma, parla di window.open ... sentiamo lui cosa genera e se ha
problemi.


 'nsomma, parla di window.open ... 
ARGH! Ovviamente "lo stesso giochetto" ma con le dovute differenze :-P


 'nsomma, parla di window.open ... 
E con ciņ..?
-- 
- Egon, questo mi ricorda quando tentasti di trapanarti il cranio.
- Mi saebbe riuscito se non mi avessi fermato.



Google (groups, in questo caso) ti č spesso amico:
http://groups.google.com/group/it.comp.lang.javascript/msg/fc60159902544f0b?hl=it&
(Cristiano, tu avevi anche partecipato al thread in questione, te lo saresti
dovuto anche ricordare!)
-- 
- Se tu un Dio?
- N...no.
- E allora MUORI!
- Ray, se qualcuno ti chiede se sei un Dio, tu devi rispondere di sě!

Nando ha scritto:

Ho adottato la soluzione proposta da Nando e funziona perfettamente.
Come dicevi i siti non sono miei.
Ho salvato sul desktop il semplice script e dopo averlo aperto con 
Firefox clicco su start.
Il fatto che si apra un'altra finestra non è importante : una volta 
avviato lo  script ingrandisco la finestra in cui si aprono i siti e 
minimizo quella di partenza.
Grazie quindi a Nando e a Cristiano per la gentile disponibilità
Fabio

 		timerId=setInterval("loadUrl()",5000);
Quello "logico": mi par di capire che tu ogni 5 secondi invochi la funzione
che cambia url. Ma se una pagina, per caricarsi, ci mette, chessň, 3 secondi?
Ti rimangono 2 di visualizzazione, non piů 5. E se putacaso ce ne dovesse
mettere di piů di 5, per caricarsi completamente?
E' piů logico far partire un timeout nel momento in cui la pagina č stata
correttamente caricata. Parallelamente, a quanto hai fatto per la tua chat.
Cambiano le premesse, ma la logica č la medesima. Solo che in quel caso potevi
utilizzare benissimo un setInterval, per certi versi era piů indicato, mentre
qui č esattamente l'opposto.
E non capisco perché qui tu non l'abbia usato. :)
Probabilmente perché ti sei concentrato sull'uso di una finestra aggiuntiva,
invece che di un iframe.
-- 
- Lei ha precedenti di pazzia in famiglia?
- Mio nonno credeva d' essere San Giuseppe...
- Io ci metterei un bel SI!

 E con ciò..?
l'utente ha detto di non essere molto esperto di javascript (infatti se l'è
tenuto così com'è...)
-- 
"Non sai che ci vuol scienza
 ci vuol costanza
 ad invecchiare senza maturità"
									    F.G.

 tenuto cosě com'č...)
D'accordo, ma non ho ben capito la risposta "insomma, parla di window.open"
riferito a fare lo stesso giochetto in un iframe. L'utente non ha mai parlato
di window.open, quindi ho supposto che tu ti riferissi allo script quando
dicevi "parla [lo script] di window.open". O sbaglio?
Perché detta cosě, appunto, sembra quasi che "ti stoni" window.open e iframe
nello stesso contesto.


 riferito a fare lo stesso giochetto in un iframe. 
No, dicevo solo che non era quello che aveva chiesto il Fabius.
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.

 No, dicevo solo che non era quello che aveva chiesto il Fabius.
Si, ma l'hai detto riferito alla frase di Nando: "Infatti può fare lo stesso
giochetto in un iframe...", cosa assolutamente vera e con una modifica davvero
inesistente, usando appunto window.open. Per questo non capisco il tuo
"insomma, parla di window.open", mi sembra un controsenso.
-- 
- Ray è completamente partito Egon, di te che ne è restato?
- Mi dispiace Venkman,il terrore travalica la mia capacità di razionalizzare

 Infatti può fare lo stesso giochetto in un iframe...
Sì, ma lui non vuole aprire in un'altra window, quindi non va usato
window.open per la richiesta che ha fatto Fabius, ma qualcosa tipo un
top.frames['nomedelframe'].location.href. Dato che dice che non sa nulla di
javascript non so cosa se ne farà di questa function ... [la usa lo stesso,
abbiamo scoperto...].
ok? :-)


 top.frames['nomedelframe'].location.href. 
è chiaro che il tuo "insomma, parla di un window.open" l'avevi scritto proprio
perché non lo vedevi usato in connubio ad un iframe. 
Ed è questo che volevo capire, perché in tal caso ciò non è vero.
La frase di Nando "può fare lo stesso giochetto in un iframe" è verissima,
utilizzando ugualmente la window.open, e con una "modifica davvero
inesistente".
Ci siamo adesso? :)
-- 
- Penso che sia meglio dividerci
- Buona idea
- SII, così possiamo fare più danno!!

 inesistente".
Siccome non amo prendermi meriti che non ho... ovviamente non so come si
userebbe window.open con gli iframe... quando ho risposto a Cristiano
intendevo che si poteva fare "lo stesso giochetto" con
document.getElementById('iframeID'].src=newUrl
:-)


 invece che di un iframe.
No, è che non mi sono concentrato affatto... ed ero sicuro che m'avresti
"beccato" su questa cosa!
Ho scritto un post superfluo, lo ammetto, perché ci ho riflettuto poco. A
me è stato utile per imparare un'altra cosa... magari all'OP un po' di meno
:)


 dovuto anche ricordare!)
:-O non ricordo cosa ho mangiato ieri, figurati una chiacchierata di 3 anni
fa !!


 figurati una chiacchierata di 3 anni fa !!
Però riguarda la nostra professione, e per questo dico che te la saresti
dovuta ricordare. :)
Mi trovo molto d'accordo con quanto affermato da Sherlock Holmes (è
inquietante che mi ritrovi a riferirmi così spesso alle frasi scritte da Sir
Arthur Conan Doyle, in ambito informatico); in un dialogo con il Dottor
Watson:
"Vede, secondo me il cervello di un uomo, in origine, è come una soffitta
vuota: la si deve riempire con mobilia di nostra scelta. L'incauto vi
immagazzina tutte le mercanzie che si trova tra i piedi: le nozioni che
potrebbero essergli utili finiscono col non trovare più il loro posto, o,
nella migliore delle ipotesi, si mescolano e si confondono con una quantità
d'altre cose, cosicchè diviene assai difficile reperirle. Viceversa, lo
studioso accorto seleziona accuratamente ciò che immagazzina nel suo cervello.
Ci mette soltanto gli strumenti che possono aiutarlo nel suo lavoro, ma di
quelli tiene un vasto assortimento, e si sforza di sistemarli nell'ordine più
perfetto. E' un errore illudersi che quella stanzetta abbia pareti elastiche e
possa ampliarsi a dismisura. Creda a me, viene sempre il momento in cui per
ogni nuova cognizione, se ne dimentica qualcuna acquisita in passato. Di
conseguenza è importantissimo evitare che un assortimento di fatti inutili
possa spodestare quelli utili. - Ma qui si tratta del sistema solare! -
esclamai. - Che me ne importa? Lei dice che giriamo intorno al sole. Se
girassimo attorno alla Luna non cambierebbe niente per me o per il mio lavoro"
-- 
- Vuoi tu questo corpo?
- E' una domanda trabocchetto?

 girassimo attorno alla Luna non cambierebbe niente per me o per il mio lavoro"
Eggià ... ma ROTFL ! (ha sempre ragione il pragmatico S.H., anche se si
dimentica cose come la curiosità, l'amore per la verità, il sapere etc ...
se Socrate leggesse una frase come quella sopra gli verrebbe un colpo!)


 se Socrate leggesse una frase come quella sopra gli verrebbe un colpo!)
Beh, tirando in ballo personaggi storici, mentre cercavo la conversazione
completa da riportare, ho scoperto che anche Albert Einstein la pensava allo
stesso modo (era anche lui un estimatore dei racconti di Conan Doyle, tra
l'altro):
"Albert Einstein era noto per la sua straordinaria intelligenza e per la sua
eccentricità. A un giornalista, sbalordito per la sua abitudine di non
imparare a memoria il proprio numero di telefono, replicò assai seriamente che
il suo cervello era troppo prezioso per occuparlo a mandare a memoria numeri
che poteva benissimo scrivere sulla sua agenda, e che solo uno sciocco
l'avrebbe intasato con dati del tutto inutili."
-- 
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 userebbe window.open con gli iframe... 
Scherzi a parte, si era capito dalla risposta che avevi dato (difatti,
Cristiano ha detto "Nando ha capito subito cosa intendevo").
Attento che ora parto con una riflessione noiosa & non richiesta :)
Quindi in caso salta a piè pari.
Come spesso mi capita di dire quando parlo con altri sviluppatori web, ad
esempio con il buon vecchio Scartabelli che ultimamente è un purtroppo assente
da questo NG (ma so che ci segue), il vantaggio delle tecnologie web è un'arma
a doppio taglio.
Il vantaggio è che sono tecnologie aperte. Javascript, CSS, HTML.. se io
faccio un sito, le persone possono accedere al codice che io ho scritto e
imparare da esso.
Lo svantaggio, è che tali persone rischiano di legarsi troppo ai "proprio
maestri virtuali": si finisce per fare le cose in un certo modo, perché in
giro vediamo solo gente fare così. Spesso non ci si chiede se è effettivamente
il modo migliore, o se ci sono altre strade, perché si dà per assunto che se
"tutti fanno in quel modo, allora ci sarà un motivo" (mi ricorda un po'
"mangiate merda..! Milioni di mosche non possono sbagliarsi!").
La maggior parte delle persone assume questo comportamento perché si sa, la
massa è per lo più "pecorona". Altri invece per semplice mancanza di tempo.
Pochi sperimentano. Sia durante la fase di apprendimento che, soprattutto,
dopo. E' per questo che io, quando ne ho occasione, preferisco far ragionare
le persone su un determinato problema; piuttosto che dar direttamente il
codice come io l'avrei scritto.
Tornando al nostro problema, il discorso è molto semplice: i frame, e iframe,
contengono delle finestre. Ogni finestra ha un attributo, che è il NAME. Lo
puoi specificare da javascript o da tag. Serve per riferirsi alla finestra,
sia a livello di scripting che a livello di codice di markup (target).
Sappiamo cosa succede se si esegue una window.open() specificando il nome
della finestra. Lo sappiamo perché lo vediamo fare a giro ;)
Se tale finestra non esiste, la crea e carica l'url. Altrimenti, non ne apre
un'altra ma carica l'url in quella preesistente.
Cosa mi vieta, quindi, di fare una window.open specificando il name di una
finestra che sta in un iframe, dato che sempre di finestre stiamo parlando?
Risposta: nulla.
Mi posi la domanda all'epoca, e funzionò. E ottenni anche il riferimento alla
finestra in questione, che più tardi fu una tecnica che mi tornò utile in
altri ambiti.
Quindi il tuo codice per funzionare con un iframe, avrebbe solo bisogno di
aggiungere il name dello stesso quando fai la window.open; senza alcun
ulteriore modifica.
Certo, si potrebbe a quel punto ripulire il codice (visto che di iframe a
questo punto si tratta e non di popup) ma già così funzionerebbe ugualmente.


 Tornando al nostro problema, il discorso č molto semplice:
Tutto chiarissimo. E di una semplicitŕ sconcertante. Anche se devo
distinguere bene le cose... un frame "contiene" una finestra... il nome del
frame č il nome della finestra... perň il frame non č la finestra, giusto?
Cioč, un riferimento all'oggetto frame č diverso da un riferimento
all'oggetto finestra... o no? Ok, mň testo e vedo.
Ad ogni modo, sono cose che ti vengono in mente solo quando quando sei
padrone dei mezzi che adoperi.
Ma imparerň, oh sě che imparerň!


 padrone dei mezzi che adoperi.
Dipende cosa intendi dire con questa frase; perché sono parzialmente
d'accordo. Ci sono cose che effettivamente ti vengono in mente solo quando
sei padrone dei mezzi che adoperi, ovvero - nel nostro contesto - conosci
in modo approfondito DOM e Javascript. Sapere che strumenti essi ti mettono
a disposizione, ti permette di elaborare approcci e pensieri diversi da
prima.
Ma in questo caso il discorso è, dal mio punto di vista, un altro.
window.open, window.frames, document.getElementById.. sono cose usatissime
e conosciute, e sono una percentuale infinitesimale dei mezzi che DOM e
Javascript ti metto a disposizione. La chiave di volta sta nella
comprensione di questi mezzi, anche se non ne sei totalmente padrone.
Capire come "funzionano", in un senso ampio del termine. E secondo me
questa .. "scintilla", può accadere sia prima che dopo essere padrone dei
mezzi che si usano. E ho visto anche casi in cui non accade neppure,
purtroppo.
Conoscenza e comprensione non vanno sempre di pari passo.


 Conoscenza e comprensione non vanno sempre di pari passo.
Frase stringata ma che lascia spazio a molti approfondimenti... A primo
acchito mi sento di dire che, imho, non půň esservi conoscenza senza
comprensione mentre, ahimč, č certamente possibile il contrario. Oddio...
ci sarebbe da riflettere molto anche su questo, e sul significato i
"conoscensa" e "comprensione"... probabilmente se mi sentisse un filosofo
mi riderebbe in faccia :)


 completata. Al limite si metteranno delle pezze a furia di google.
Se per comprendere si intende il /capire il senso di qualcosa/, e per
conoscere si intende /possedere la nozione/, allora continuo a dire che la
conoscenza è propedeutica alla comprensione: non puoi capire il senso di
ciò che non conosci. Quindi, sono assolutamente d'accordo con la tua ultima
affermazione (la conoscenza senza comprensione è incompleta) ma non con la
penultima: non è la comprensione che deve essere completata, piuttosto è la
conoscenza che deve essere approfondita ed esperita cosicché si possa
capire a fondo, comprendere, ciò di cui si è acquisita una nozione.


 dei reference per tutti i linguaggi che uso. Ma li "capisco" tutti.
Ma allora siamo *totalmente* d'accordo... però certo la tua conoscenza
doveva essere tale da permetterti di cercare, nella reference, ciò di cui
avevi bisogno, e di capire la "natura" dei problemi e immaginare le
possibili soluzioni. Insomma, occorre conoscere le fondamenta sulle quali
si erige la costruzione, il resto si deduce (se se ne è capaci). Non
parlavo affatto di conoscenza "totale" e, ovviamente, avevo specificato che
la conoscenza senza comprensione è, a mio avviso, una scatola vuota :)
