2008-09-15 7 views

Répondre

0

Peut-être essayer d'utiliser une minuterie qui récupère l'image suivante à chaque fois qu'il tiques, malheureusement, je ne sais pas JavaScript si je impossible de fournir un échantillon de code

3

Vous devez utiliser une minuterie pour apporter en continu de nouvelles images au lieu d'une boucle infinie. Vérifiez la fonction setTimeout(). La mise en garde est que vous devriez l'appeler dans une fonction qui s'appelle, pour attendre à nouveau. Exemple tiré de w3schools

<html> 
<head> 
<script type="text/javascript"> 
var c=0 
var t 
function timedCount() 
{ 
document.getElementById('txt').value=c; 
c=c+1; 
t=setTimeout("timedCount()",1000); 
} 
</script> 
</head> 

<body> 
<form> 
<input type="button" value="Start count!" 
onClick="timedCount()"> 
<input type="text" id="txt"> 
</form> 
</body> 

</html> 
+0

Ceci est plus compliqué que de simplement utiliser setInterval ... –

+0

Vous devriez utiliser 'timedCount' au lieu de' "timedCount()" '. Il n'y a pas de raison que vous ayez besoin d'évaluer l'appel de la fonction au lieu de simplement passer la fonction directement. –

1

Au lieu d'utiliser une boucle infinie, faire une minuterie qui continue à tirer toutes les n secondes - vous aurez l'aspect «courir pour toujours sans le navigateur se bloquer.

0
function foo() { 
    alert('hi'); 
    setTimeout(foo, 5000); 
} 

Ensuite il suffit d'utiliser une action comme « onload » pour lancer « foo »

2

Le code suivant établira un intervalle et définir l'image à l'image suivante à partir d'un tableau de sources d'images par seconde.

function setImage(){ 
    var Static = arguments.callee; 
    Static.currentImage = (Static.currentImage || 0); 
    var elm = document.getElementById("imageContainer"); 
    elm.src = imageArray[Static.currentImage++]; 
} 
imageInterval = setInterval(setImage, 1000); 
0

Si elle correspond à votre cas, vous pouvez conserver de nouvelles images de chargement pour répondre à une interaction utilisateur, comme this website does (défilement juste en bas).

0

Juste une réponse formelle:

var i = 0; 

while (i < 1) { 
    do something... 

    if (i < 1) i = 0; 
    else i = fooling_function(i); // must return 0 
} 

Je pense qu'aucun navigateur ne détecterait ces choses.

+0

Les navigateurs vous demanderont si l'opération _any_ prend trop de temps. Votre boucle n'est pas une exclusion. La seule façon est d'utiliser setInterval/setTimeout (comme cela a déjà été noté). –

Questions connexes