1

Googleマップを使用して一連の画像をオーバーレイとして表示しています。これらの画像の表示は無限ループになるはずですが、ほとんどのブラウザはこれを検出し、警告を表示します。

JavaScriptで無限ループを作成して、ブラウザーによって停止または警告されないようにする方法はありますか?

4

8 に答える 8

8

setIntervalまたはsetTimeoutを試してください。

次に例を示します。

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

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

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

于 2008-09-15T13:49:30.533 に答える
3

無限ループではなく、タイマーを使用して継続的に新しい画像を表示する必要があります。機能を確認してください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>

于 2008-09-15T13:50:23.963 に答える
2

次のコードは、間隔を設定し、毎秒画像ソースの配列から次の画像に画像を設定します。

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);
于 2008-09-15T13:57:00.797 に答える
1

無限ループを使用する代わりに、n 秒ごとに起動し続けるタイマーを作成します。ブラウザーがハングすることなく、「永久に実行」の側面が得られます。

于 2008-09-15T13:51:26.427 に答える
0

ケースに合う場合は、このWebサイトのように(下にスクロールするだけで)、ユーザーの操作に応答するために新しい画像をロードし続けることができます。

于 2008-09-15T14:04:49.373 に答える
0

おそらく、刻むたびに次の画像を取得するタイマーを使用してみてください。残念ながら、私は JavaScript をまったく知らないので、コード サンプルを提供できません。

于 2008-09-15T13:50:04.277 に答える
0
function foo() {
  alert('hi');
  setTimeout(foo, 5000);
}

次に、「onload」などのアクションを使用して「foo」を開始します

于 2008-09-15T13:54:03.770 に答える
0

ただの正式な答え:

var i = 0;

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

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

そのようなことを検出するブラウザはないと思います。

于 2008-09-15T16:38:45.683 に答える