Boucle sans fin en JavaScript qui ne déclenche pas d'avertissement par navigateur

StackOverflow https://stackoverflow.com/questions/63011

  •  09-06-2019
  •  | 
  •  

Question

J'affiche un ensemble d'images en superposition à l'aide de Google Maps. L'affichage de ces images doit se faire sans fin, mais la plupart des navigateurs le détectent et affichent un avertissement.

Existe-t-il un moyen de créer une boucle sans fin en JavaScript afin que le navigateur ne l'arrête pas ni ne le prévienne?

Était-ce utile?

La solution

Essayez setInterval ou setTimeout .

Voici un exemple:

(show = (o) => setTimeout(() => {

  console.log(o)
  show(++o)

}, 1000))(1);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Autres conseils

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 devez l'appeler dans une fonction qui s'appelle elle-même, pour qu'elle attende à nouveau. Exemple tiré de w3schools :

var c = 0
var t;

function timedCount() {
  document.getElementById('txt').value = c;
  c = c + 1;
  t = setTimeout("timedCount()", 1000);
}
<form>
  <input type="button" value="Start count!" onClick="timedCount()">
  <input type="text" id="txt">
</form>

Le code suivant définira un intervalle et définira l'image sur l'image suivante d'un tableau de sources d'image toutes les secondes.

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);

Au lieu d'utiliser une boucle infinie, créez un minuteur qui continue de se déclencher toutes les n secondes. Vous obtiendrez l'aspect "courir pour toujours" sans que le navigateur ne se bloque.

Essayez peut-être d'utiliser une minuterie qui récupère l'image suivante à chaque fois qu'elle coche. Malheureusement, je ne connais aucun JavaScript et je ne peux donc pas fournir d'échantillon de code

.

Si cela vous convient, vous pouvez charger de nouvelles images pour répondre aux interactions de l'utilisateur, comme ce site Web (faites simplement défiler vers le bas).

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 de telles choses.

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

Ensuite, utilisez simplement une action du type "onload". pour lancer 'foo'

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top