我正在使用 Google 地图将一组图像显示为叠加层。显示这些图像应该无限循环,但大多数浏览器都会检测到这一点,并显示警告。
有没有办法在 JavaScript 中创建一个无限循环,以便浏览器不会停止或警告它?
我正在使用 Google 地图将一组图像显示为叠加层。显示这些图像应该无限循环,但大多数浏览器都会检测到这一点,并显示警告。
有没有办法在 JavaScript 中创建一个无限循环,以便浏览器不会停止或警告它?
这是一个例子:
(show = (o) => setTimeout(() => {
console.log(o)
show(++o)
}, 1000))(1);
.as-console-wrapper { max-height: 100% !important; top: 0; }
您应该使用计时器来不断带来新图像,而不是无限循环。检查setTimeout()
功能。需要注意的是,您应该在调用自身的函数中调用它,以便它再次等待。取自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>
以下代码将设置一个间隔,并将图像设置为每秒图像源数组中的下一个图像。
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,所以我无法提供代码示例
function foo() {
alert('hi');
setTimeout(foo, 5000);
}
然后只需使用“onload”之类的动作来启动“foo”
如果它适合您的情况,您可以继续加载新图像以响应用户交互,就像这个网站一样(只需向下滚动)。
只是一个正式的答案:
var i = 0;
while (i < 1) {
do something...
if (i < 1) i = 0;
else i = fooling_function(i); // must return 0
}
我认为没有浏览器会检测到这样的事情。