IE中的jQuery和内存泄漏

时间:2013-06-27 07:06:39

标签: javascript jquery internet-explorer memory-leaks

我们有这个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 / min)。我们尝试过jQuery 1.8.3。和1.10.1,但结果相同。提前感谢您的回答。

1 个答案:

答案 0 :(得分: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'));
}

对于我的一个项目,我删除了“闭包”,因为导致内存泄漏(循环引用)。

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