DOM:window.setTimeout
Un article de MDC.
Sommaire |
[modifier] Résumé
Exécute un morceau de code ou une fonction après un délai donné.
[modifier] Syntaxe
timeoutID = window.setTimeout(fnct, delai[, param1, param2, ...]); timeoutID = window.setTimeout(code, delai);
où
-
timeoutIDest l'identificateur 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. -
delaiest le nombre de millisecondes (millièmes de seconde) après lequel la fonction doit être appelée.
Notez que le passage de paramètres supplémentaires à la fonction dans la première syntaxe ne fonctionne pas dans Internet Explorer.
[modifier] Exemples
window.setTimeout('window.parent.generateOutput()', 1000);
function generateOutput(aConcise) {
if(aConcise)
parent.generateConciseOutput();
else
parent.generateOutput();
}
window.setTimeout(generateOutput, 1000, true);
<html>
<head>
<title>exemple de setTimeout</title>
<script type="text/javascript">
function delayedAlert()
{
timeoutID = window.setTimeout(slowAlert, 2000);
}
function slowAlert()
{
alert("C'était vraiment long !");
}
function clearAlert()
{
window.clearTimeout(timeoutID);
}
</script>
</head>
<body>
<button onclick="delayedAlert();">afficher un message d'alerte après 2 secondes</button><br />
<button onclick="clearAlert();">Annuler</button>
</body>
</html>
Consultez également l'exemple de clearTimeout().
[modifier] 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().
[modifier] 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.
[modifier] Spécification
DOM Level 0. Ne fait partie d'aucune spécification.