ページ上に背景のdivをランダムに作成するJavaScriptに問題があります(サイトの背景にこれらのフローティングサークルを作成するため)。スクリプトは次の間隔で実行されます。
var floatInterval = window.setInterval(createFloaters, 10000);
function createFloaters()
{
lastHeight = 0;
pageOffset = $('#logo').offset();
for(j = 0; j<10; j++)
{
randomSize = j * Math.random()*20;
randomTop = Math.random()*randomSize + lastHeight + Math.random()*10 + 10;
plusOrMinus = [-1,1][Math.random()*2|0];
randomColorNum = Math.floor(Math.random()*colArr.length);
randomColor = colArr[randomColorNum];
randomLeft = Math.random()*990 + pageOffset.left;
randomOpacity = Math.random()*.5;
$('#floatContainer').append('<div class="circle d' + j + '" style="width:' + randomSize + 'px; height:' + randomSize + 'px; position: absolute; top:' + eval((randomTop - Math.random()*500)*plusOrMinus) + 'px; left:' + eval((randomLeft + Math.random()*200)*plusOrMinus) + 'px; border-radius:' + randomSize + 'px; background:' + randomColor + '"></div>');
lastHeight += randomSize;
$('.d' + j).delay(Math.random()*500).animate({top: randomTop, left: randomLeft, opacity: randomOpacity}, Math.random()*5000 + 5000).fadeOut().queue(function(){
$(this).remove();
});
}
console.log('FLOAT LENGTH: ' + $('#floatContainer div.circle').length);
}
フローティングサークルが作成されると、アニメーション化されてから削除されます。divが完全に削除されていないようです。
タブに焦点を合わせている間に作成されているdivの数を追跡すると、正常な結果が得られます。
Number of Divs: 13
Number of Divs: 21
Number of Divs: 13
Number of Divs: 21
Number of Divs: 13
Number of Divs: 21
次に、タブを切り替え、数分間そこに座って、元のタブに戻ります。これが表示されます。
Number of Divs: 187
Number of Divs: 197
Number of Divs: 207
Number of Divs: 13
Number of Divs: 21
Number of Divs: 13
Number of Divs: 21
Number of Divs: 13
Number of Divs: 21
この問題を修正するにはどうすればよいですか?動的に作成されたdivをメモリから完全に削除するにはどうすればよいですか?アクティビティモニターを確認しましたが、ページが実行される時間が長くなるほど、ページがメモリを占有し続けます。