Что происходит с прикрепленными событиями после изменения страницы? - PullRequest
1 голос
/ 01 апреля 2019

Рассмотрим этот сценарий:

2 слегка отличающиеся страницы с 2 слегка отличающимися таблицами: user-table и admin-table.Оба реализуют нумерацию страниц.Давайте предположим, что

<div class="pager">
    Pager implementation
</div>

Я присоединяю события к .pager, к кнопкам с номерами страниц, и делаю это дважды в разных файлах.Каждый файл имеет свою реализацию пейджера (то есть вызывает другой контроллер).Сценарии включены в соответствующие страницы и загружаются после загрузки DOM.

user-table.js

$('.pager').on('click', '.page', function() {
    $.get(...) //calling user-controller to get the results
};

admin-table.js

$('.pager').on('click', '.page', function() {
    $.get(...) //calling admin-controller to get the results
};

Как-то это работает и не конфликтует.Что для меня нелогично.

Когда я перехожу на страницу пользователя, загружается user-table.js.После того, как я нажимаю на номер страницы, событие запускается, и содержимое загружается.

Что происходит, когда я захожу на страницу администратора и делаю то же самое?Почему это работает?После навигации загружается второй скрипт и назначаются / делегируются новые события.Разве не должно быть конфликтов?События с предыдущей страницы / сценария «забыты»?Сценарии будут кэшироваться, и я снова ожидаю конфликтов, что не так.

Может ли кто-нибудь объяснить мне рабочий процесс или жизненный цикл события?Что происходит с существующими событиями после ухода со страницы?Я попробовал поискать в Google, но не смог найти ничего подходящего.

1 Ответ

1 голос
/ 01 апреля 2019

События с предыдущей страницы / сценария "забыты"?

Да.HTML полностью без состояния.Браузером будет рассматриваться только то, что в данный момент загружено в DOM.Все предыдущие страницы удаляются из памяти при возникновении события beforeunload.

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