страница взрывает использование памяти до 80 МБ, а затем умирает - PullRequest
0 голосов
/ 25 февраля 2011

Я использую asp.net и chrome, и страница через некоторое время перестает отвечать на запросы.Когда я смотрю на отладку Chrome, я вижу, что использование памяти увеличивается примерно до 80 МБ, и Chrome выдает запрос на уничтожение страницы.Счетчик ошибок вращается и генерирует около 30000 ошибок при появлении всплывающего окна.То, что вызывает ошибку, является вызовом панели обновления.Ошибка, отображаемая в Chrome: «Не удалось загрузить ресурс».

Панель обновления: пользователь нажимает кнопку, и панель обновляется.На странице есть только одна панель обновления.

Вот что у меня есть:

function HistoryUIActions() {
     $('.SelectDay, .SelectDay1Digit').click(function () { GetNewDate(this); });
};


function GetNewDate(thedateitem) {

    var TheDay = $.trim($(thedateitem).html());
    TheYear = 2011;
    ThisMonth = 2;

    DateString = ThisMonth + '/' + TheDay + '/' + TheYear;

    __doPostBack('<%= TheUpdatePanel.ClientID %>', DateString);
 };


function EndRequestHandler(sender, args) {
    HistoryUIActions();
 };

Ошибки на каждой обратной передаче составляют: 1,4, 11, 26, 57, 120, 247.... в итоге хром убивает страницу.Когда я ставлю точку останова в функции, она останавливает код сразу после нажатия кнопки;затем, после того как он достигает строки __doPostBack, он снова запускает функцию GetNewDate несколько раз, возвращаясь к строке события click, по-видимому, выполняя ее количество раз, показанное выше.

Есть предложения?

1 Ответ

3 голосов
/ 25 февраля 2011

Duh. :) Посмотрев на это дюжину раз, я думаю, что у меня есть ответ, или, по крайней мере, его часть.

Ваш элемент управления кликом находится за пределами панели обновления. Тем не менее, вы вызываете «HistoryUIActions», чтобы связать событие click с jQuery после каждого обновления. Это удваивает количество событий щелчка, связанных с вашим элементом управления, каждый раз, когда вы нажимаете на него.

Обработчики кликов накапливаются. Вам не нужно перепривязывать его, если только реальный элемент DOM элемента управления не был перерисован. Каждый раз, когда вы нажимаете, вы добавляете дубликат обработчика.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...