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ù
timeoutIDest l'identificateur numerique du timeout, qui peut être utilisé avec window.clearTimeout.fnctest la fonction que vous désirez exécuter aprèsdelaimillisecondes.codeest, dans la syntaxe alternative, une chaîne contenant le code à exécuter aprèsdelaimillisecondes. (L'utilisation de cette syntaxe n'est pas recommandée pour les mêmes raisons que l'utilisation d'eval()).delaiest 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.