Devi creare due eventi diversi a distanza di distanza di 10 minuti e impostare la loro ripetizione a 20 minuti. Tuttavia se la faccenda si presenta in questi termini la soluzione più semplice è usare una pagina html che con un javascript ogni x minuti cambi il contenuto di un suo frame. Guarda caso, ho già scritto questo oggetto un po' di tempo fa:
codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
"http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<!--
___________________________________________________________
/__________________________________________________________/|
| ||
| ...:::HTML & JavaScript Slideshow by Matteo Italia:::... ||
| ...:::Versione 1.3:::... ||
| ..::Introduzione::.. ||
| HTML & JavaScript Slideshow e' una pagina in grado di ||
| mostrare una serie di altre pagine web specificate come ||
| una presentazione: in pratica la pagina dispone di una ||
| lista di pagine, che mostra in sequenza, una ogni x ||
| secondi. ||
| ..::Utilizzo::.. ||
| 1. Impostare le pagine da visualizzare inserendo la' ||
| dove vi e' il commento "//Inizializzazione array" una ||
| serie di istruzioni "pages.push("indirizzopagina");", ||
| dove indirizzopagina e' l'indirizzo della pagina da ||
| visualizzare. ||
| 2. Tra un "pages.push" e l'altro inserire i ritardi ||
| relativi alla pagina appena aggiunta, inserendo ||
| l'istruzione "delays.push(tempo);", dove tempo e' ||
| espresso in millisecondi. Al posto del numero di ||
| millisecondi e' consigliabile usare una delle ||
| variabili "breve" "medio" "lungo", ridefinibili a ||
| piacimento. ||
| 3. Impostare se il ciclo una volta terminato deve ||
| ripartire, impostando la variabile loop a true in ||
| caso affermativo. ||
| 4. Collaudare. ||
| ..::Note::.. ||
| 1. La pagina e' stata collaudata con successo con ||
| Microsoft Internet Explorer 6.0 SP1 e Mozilla ||
| Firefox 1.5.0.3. ||
| 2. La pagina e' risultata HTML 4.0 Frameset valido per ||
| il validatore W3C (http://validator.w3.org/). ||
| 3. Questa pagina e' ridistribuibile e modificabile ||
| liberamente, a patto che rimanga un rimando alla mia ||
| persona nel codice. ||
| 4. Gli accenti sono stati sostituiti con apostrofi. Non ||
| e' bello, ma altrimenti il validatore W3C non accetta ||
| la pagina. ||
| ..::Milano, 10 Maggio 2006::.. ||
|__________________________________________________________|/
-->
<head>
<title>HTML & JavaScript Slideshow by Matteo Italia</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<meta name="author" content="Matteo Italia">
<script language="javascript" type="text/javascript">
<!--
//Costanti su cui eventualmente intervenire.
var breve=20000; //Tempo "breve".
var medio=40000; //Tempo "medio".
var lungo=60000; //Tempo "lungo".
var defDelay=medio; //Tempo per cui sara' visibile ogni pagina se non fosse disponibile il suo valore in delays.
var loop=true; //Valore booleano che indica se al termine il ciclo ricomincia.
//Variabili su cui non intervenire
var timerID; //ID del timer, utilizzato per fermarlo.
var pages=new Array(); //Array contenente gli indirizzi delle pagine. Inizializzato in initialize().
var delays=new Array(); //Array contenente il tempo per cui sara' visibile ogni pagina.
var actualPageNumber=-1;//Pagina attualmente visualizzata.
function initialize() //Funzione di inizializzazione
{
//Inizializzazione arrays.
pages.push("http://www.microsoft.com/");
delays.push(breve);
pages.push("http://www.techtown.it/");
delays.push(lungo);
pages.push("http://www.google.it/");
delays.push(medio);
pages.push("http://it.wikipedia.org/");
delays.push(medio);
//Forza una prima esecuzione di timerElapsed.
timerElapsed();
//Ritorna.
return;
}
function timerElapsed() //Funzione eseguita quando il timer scade.
{
//Blocca il timer
clearTimeout(timerID);
//Incrementa di uno il numero di pagina attuale
actualPageNumber+= 1;
//Se abbiamo superato il numero di pagine memorizzato...
if (actualPageNumber>(pages.length-1))
{
//...verifica l'impostazione loop:
if (loop) //se bisogna ricominciare...
{
//...ripristina il numero di pagina attuale sullo zero.
actualPageNumber=0;
}
else //Se invece il ciclo deve terminare...
{
//...ritorna.
return;
}
}
//Aggiorna il frame con la pagina attuale.
refreshFrame();
//Determinazione del ritardo per la pagina caricata.
var tdelay;
//Se non esiste un ritardo per questa pagina...
if (actualPageNumber>delays.length-1)
{
//...usa quello di default.
tdelay=defDelay;
}
else
{
//Altrimenti usa il suo.
tdelay=delays[actualPageNumber];
}
//Reimposta il timer.
timerID=setTimeout("timerElapsed()",tdelay,"JavaScript");
//Ritorna.
return;
}
function refreshFrame() //Aggiorna il frame con la pagina attuale.
{
//Recupera l'oggetto-frame, e quindi imposta il suo attributo src all'indirizzo della pagina da visualizzare.
document.getElementById("mainframe").src=pages[actualPageNumber];
//Ritorna.
return;
}
function errore()
{
alert("Errore!");
}
-->
</script>
</head>
<frameset onload="initialize()">
<frame id="mainframe">
<noframes>
Per visualizzare correttamente questa pagina è necessario abilitare i
frames.</p>
</noframes>
</frameset>
</html>