IE утечка памяти и Eval с JQuery - PullRequest
3 голосов
/ 17 ноября 2011

Я создал страницу, которая должна обновлять свои элементы в соответствии с тем, что происходит с данными в нашей базе данных. Я хотел бы знать, что вы думаете об этом подходе с использованием eval, я знаю, что это рискованно, но в моем случае это был самый быстрый способ.

$('.updatable').each(function () {
        var data;
        data = 'ViewObjectId=' + $(this).attr('objectid');

        $.ajax({
            async: true,
            url: '/Ajax/GetUpdatedViewObjectDataHandler.ashx',
            data: data,
            type: 'POST',
            timeout: 10000,
            success: function (data) {
                $.each(data, function (index, value) {
                        eval(value);
                });
            }
        });

Теперь у меня возникает проблема, когда страница загружается, каждые 10 секунд страница обновляется, пока она не станет идеальной.

После каждого раунда обновлений мой Internet Explorer крадет некоторую память, и через несколько часов он получает всю память машины, потрясающе.

Что бы вы сделали в этом случае? Какой-то другой подход обновления рекомендуется? Или даже, вы думаете, я мог бы что-то сделать, чтобы избежать этой утечки памяти?

1 Ответ

2 голосов
/ 18 ноября 2011

Нашел ответ здесь: Простой вызов jQuery Ajax утечки памяти в Internet Explorer

РЕШЕНИЕ:

 var request = $.ajax({ .... });

 request.onreadystatechange = null; 
 request.abort = null; 
 request = null;

JQuery не делаетЭто невозможно, и память никогда не освобождается.

jQuery версия 1.4.2.

Теперь он работает как шарм.

...