Résumé
Exécute un morceau de code ou une fonction après un délai determiné.
Syntaxe
timeoutID = window.setTimeout(fnct, delai[, param1, param2, ...]); timeoutID = window.setTimeout(code, delai);
où
timeoutID
est l'identificateur numerique du timeout, qui peut être utilisé avec window.clearTimeout.fnct
est la fonction que vous désirez exécuter aprèsdelai
millisecondes.code
est, dans la syntaxe alternative, une chaîne contenant le code à exécuter aprèsdelai
millisecondes. (L'utilisation de cette syntaxe n'est pas recommandée pour les mêmes raisons que l'utilisation d'eval()).delai
est le nombre de millisecondes (millièmes de seconde) après lequel la fonction doit être appelée. Le délai réel peut s'avérer plus long (cf. doc en anglais).
Notez que le passage de paramètres supplémentaires à la fonction dans la première syntaxe ne fonctionne pas dans Internet Explorer < 9.
Exemples
L'exemple suivant met en place deux boutons sur une page web et associe chacun d'entre eux aux routines setTimeout
et clearTimeout
. Appuyer sur le premier bouton définit un timeout (délai d'execution) qui appelle une boite de dialogue après deux secondes et enregistre l'id du timeout afin que celui-ci puisse être invoqué par le clearTimeout
(annulation du délai d'execution). Il vous est donc possible d'annuler ce délai en appuyant sur le second bouton.
HTML
<p>Live Example</p>
<button onclick="delayedAlert();">Show an alert box after two seconds</button>
<p></p>
<button onclick="clearAlert();">Cancel alert before it happens</button>
JavaScript
var timeoutID;
function delayedAlert() {
timeoutID = window.setTimeout(slowAlert, 2000);
}
function slowAlert() {
alert("That was really slow!");
}
function clearAlert() {
window.clearTimeout(timeoutID);
}
Autres exemples
function generateOutput(aConcise) { if(aConcise) parent.generateConciseOutput(); else parent.generateOutput(); } window.setTimeout(generateOutput, 1000, true);
// Compatibilité accrue grâce aux fonctions anonymes window.setTimeout(function() { generateOutput(true); }, 1000);
window.setTimeout('window.parent.generateOutput()', 1000);
Consultez également l'exemple de clearTimeout()
.
Notes
Il est possible d'annuler le déclenchement de la fonction à l'aide de window.clearTimeout()
.
Si vous désirez que la fonction soit appelée de manière répétée (c'est-à-dire toutes les N millisecondes), utilisez plutôt window.setInterval()
.
Le problème de « this »
Lorsqu'une méthode est passée à setTimeout()
(ou n'importe quelle fonction, d'ailleurs), elle sera invoquée avec une mauvaise valeur pour this
. Ce problème est expliqué en détails dans la référence JavaScript.
Spécification
DOM Level 0. Ne fait partie d'aucune spécification.