1

ページの一部を繰り返し更新するためのこの Javascript 関数があります。

        function refreshScreen() {
            var href = document.location.href;
            var idx = href.indexOf('?');
            $jQ.get(href.substring(0, (idx > 0 ? idx : href.length)) + '?random=' + Math.floor((Math.random()*1000000000)+1), function(data) {
                $jQ('#mainTable').replaceWith($jQ(data).find('#mainTable'));
            });
        }
        $jQ(document).ready(function() {
            if ($jQ('#mainTable').is('.refresh')) {
                window.setInterval(refreshScreen, 10000);
            }
        });

すべてのブラウザで動作しますが、IE8 ではメモリ リークが発生します (cca 30MB/分)。jQuery 1.8.3 を試しました。および 1.10.1 ですが、結果は同じです。答えてくれてありがとう。

4

1 に答える 1

0

試す

....
$jQ.get(href.substring(0, (idx > 0 ? idx : href.length)) + '?random=' + Math.floor((Math.random()*1000000000)+1),  replaceWithData });
....

function replaceWithData(data){
 $jQ('#mainTable').replaceWith($jQ(data).find('#mainTable'));
}

私のプロジェクトの 1 つで、メモリ リークが発生したため、「クロージャ」を削除しました (循環参照)。

参照: http://www.codeproject.com/Articles/12231/Memory-Leakage-in-Internet-Explorer-revisited

于 2013-06-27T09:35:19.493 に答える