медлительность при использовании события hashchange

У меня есть веб-сайт, который использует ajax для пейджинга, система страниц работает в соответствии с событием hashchange, всякий раз, когда я хочу перейти на другую страницу, я вызываю функцию, которая меняет хеш на номер страницы, когда хэш изменился событие hashchange запускается и вызывает функцию для получения данных страницы.
Тем не менее, это работает отлично, за исключением одного: если я меняю страницу более 3-4 раз, страница не будет отвечать и рухнет, я проверяю сетевой кран в элементе «Проверка» в Google Chrome и что я вижу, когда Меняю страницу количество ajax запросов удвоится и передаваемые данные тоже удвоятся, что вызовет утечку памяти.
В конце концов, я попытался выполнить пейджинг без хешрейта, чтобы посмотреть, будет ли решена проблема, и это сработало.
Подскажите, пожалуйста, что мне делать? заранее спасибо

событие hashchange

$(window).bind('hashchange', function () {
search(0);
});

функция changehash

function ChangeHash(p) {
window.location.hash = p;
}

кнопка страницы

$('#Pages').append("<button type='button' class='btn btn-default"+active+"' Onclick=\"ChangeHash(" + a + ")\">" + a + "</button>");

person Rawhi    schedule 16.10.2014    source источник


Ответы (1)


Код, который вы предоставили, этого не показывает, но, скорее всего, происходит то, что после каждого xhr вы повторно запускаете этот вызов привязки.

Следовательно, вы дважды, трижды, четверно связываете событие непреднамеренно — именно это и показывает сетевой журнал: haschange работает 2,3,4,5… раз, пока не произойдет сбой браузера.

Чтобы этого избежать, обязательно

$(window).bind('hashchange', function () {
search(0);
});

Запускается только один раз.

person user3751385    schedule 09.11.2014