Déclenchement à date donnée

En combinant les méthodes de Date et la méthode setTimeout, on peut réaliser un équivalent JavaScript du cron d'Unix, autrement dit, déclencher un évènement à un moment donné.
Il faut cependant que la page contenant le code reste affichée pour réaliser l'évènement.

Le principe consiste :

  1. Fixer la date de l'évènement, qui sera dans la démo l'affichage d'un message dans la page.
  2. Puis on retrouve la date actuelle avec l'objet Date et on calcule la différence avec le moment de l'évènement.
  3. On lance alors setTimeout avec cette différence.

Code pour déclencher un évènement:

function a()
{
var e = document.getElementById("storage");
e.innerHTML += "<p style='font-size:120%'>Le moment est venu!</p>";
}
function term()
{
var now = new Date();
var hours = document.getElementById("hours").value;
var minutes = document.getElementById("minutes").value;
var seconds = document.getElementById("seconds").value;
var term = new Date(now.getFullYear(), now.getMonth(), now.getDate(), hours, minutes, seconds, 0);
setTimeout(a, term - now);
var e = document.getElementById("storage");
var diff = Math.round((term.getTime() - now.getTime()) / 1000);
e.innerHTML += "<p><p>L'opération sera déclenchée dans " + diff + " secondes...</b></p>";
}

Démonstration

Entrer : Heure Minutes Secondes

Pour vous aider, voici la date et l'heure actuels:

Tout se passe ici...

Retourner au tutoriel setTimeout et setInterval.