Cette ligne entière:
Spire.Rotator.rotate().defer(5000);
est erroné. À cause des parenthèses juste après rotate
, votre fonction s'appelle immédiatement encore et encore (récursion infinie). Retrait des parenthèses va résoudre ce problème, mais le code ne fonctionnera probablement pas. Pour corriger le code, utilisez window.setTimeout
method du navigateur qui accepte une fonction et un délai (en millisecondes) que deux arguments:
setTimeout(function() {
Spire.Rotator.rotate();
}, 5000);
Pourquoi ne pas simplement setTimeout(Spire.Rotator.rotate, 5000);
? La raison en est que this
dans cette fonction serait window
plutôt que Spire.Rotator
. (Il ya plenty of information sur Internet à ce sujet.) Pourquoi pas setTimeout("Spire.Rotator.rotate()", 5000);
? C'est une façon assez datée (déconseillée) d'utiliser la méthode qui souffre du même pitfalls of eval, une fonction que certains programmeurs JavaScript, dont Douglas Crockford, ne recommandent pas.
N'utilisez pas de chaînes comme paramètre de setTimeout. C'est valable mais enclin à citer l'enfer et est également lent. Utilisez une fonction à la place: 'setTimeout (Spire.Rotator.rotate, 5000)' – slebetman
@slebetman Ah! Oui bien sûr. Merci pour le rappel. :) – Alex