私はjQuery.animate(divを取得してページ内をランダムに移動する方法(jQueryまたはCSSを使用)からのインスピレーション)を使用して、多数のdivをアニメーション化しました。私はいつもjQueryではなくjavascriptを使用しているので、ここでの私の足がかりは少しわかりません。したがって、最初にスニペットが必要です。
私のコードは期待どおりに動作しますが、どこかでメモリリークが発生しているようです。時間の経過とともに(約10分)、ブラウザ(IE、Chrome、FF)で約500MBのRAMが使用されます。
setTimeout
キューに入れられた命令がないので(助けられたように)、画像の読み込みなどがないので、理由を理解することはできません。
(このIF
ステートメントは、いつかクラスを変更して50'#z' divに変更し、アニメーションをオフにできるようにするためのものです。)
この種の問題のデバッグについて知っている人はいますか?時間の経過とともにブラウザがクラッシュするため、本番ページとしては基本的に役に立たない。もう1つ、FFのオンラインクラッシュレポートはひどく反転しており、送信後に「ダンプ」がなく、問題はchrome / IEであまり目立たないため、クラッシュレポートは利用できません。何か役に立つものができ次第更新します。
function animateDiv() {
for (z = 0; z < 50; z++) {
var newq = makeNewPosition();
var oldq = $("#" + z).position()
var speed = calcSpeed([oldq.left], newq);
if (document.getElementById(z).class != "b") {
$("#" + z).animate({
left: newq
}, speed, function() {});
}
}
setTimeout(function() {
animateDiv();
}, 0.1);
}
function makeNewPosition() {
var w = $('#content').width() - 25;
var nw = Math.floor(Math.random() * w);
return [nw];
}
function calcSpeed(prev, next) {
var y = Math.abs(prev - next);
var greatest = y;
var speedModifier = 0.1;
var speed = Math.ceil(greatest / speedModifier);
return speed;
}