我正在使用 Google 地图将一组图像显示为叠加层。显示这些图像应该处于无限循环中,但大多数浏览器都会检测到这一点,并显示警告。

有没有办法在 JavaScript 中进行无限循环,这样浏览器就不会停止或警告它?

有帮助吗?

解决方案

尝试 设置时间间隔 或者 设置超时时间.

这是一个例子:

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

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

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

其他提示

您应该使用计时器来不断带来新图像,而不是无限循环。检查 setTimeout() 功能。需要注意的是,您应该在调用自身的函数中调用它,以便它再次等待。示例取自 w3学校:

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>

以下代码将设置一个时间间隔,并将图像设置为每秒从图像源数组中获取的下一个图像。

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

不要使用无限循环,而是创建一个每 n 秒持续触发的计时器 - 您将获得“永远运行”方面,而不会导致浏览器挂起。

也许尝试使用一个计时器,每次滴答时都会检索下一个图像,不幸的是我不知道任何 JavaScript,所以我无法提供代码示例

如果适合您的情况,您可以继续加载新图像来响应用户交互,例如 这个网站有 (只需向下滚动)。

只是一个正式的答案:

var i = 0;

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

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

我认为没有浏览器会检测到这样的事情。

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

然后只需使用“onload”之类的操作来启动“foo”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top