Я сбит с толку. Я использую виджет select2 на веб-странице, реализованный django-autocomplete-light, и прикрепляю к нему прослушиватель событий следующим образом:
const game_selector = $("#"+id_prefix+"game");
game_selector.on("change", switchGame);
Работает шарм. Я выбираю новую игру в поле выбора, и вызывается функция switchGame.
Это работает на сервере разработки Django с manage.py runserver
. И я вижу, как это здорово в отладчике Chrome:
Вот оно, switchGame (событие) - обработчик. И все это тоже работает. Без драмы.
Но я публикую код на своем веб-сервере, и вдруг он не работает. Слушатель событий никогда не срабатывает. switchGame никогда не вызывается.
Он обслуживает один и тот же код, выглядит одинаково в клиенте и в отладчике Chrome. Все хорошо. Я даже вижу, что прослушиватель событий подключен, хотя порядок отличается:
Обслуживаемый сервером разработки, там есть обработчик select2 над switchGame в списке и обслуживаемый с производственного сервера тот же обработчик select2, который указан под обработчиком switchGame.
Может ли порядок иметь значение? И почему порядок будет отличаться?
В конце я смотрю на тот же код привязки, приведенный выше, и могу установить точку останова внутри switchGame, и cI может подтвердить, что django runserver запускает сервер switchGame, когда я выбираю новую игру, но обслуживается с производственного сервера, который она делает. нет.
Подозреваю некоторую проблему с jquery. Я даже изменил привязку слушателя на:
const game_selector = $("#"+id_prefix+"game");
//game_selector.on("change", switchGame);
game_selector.get(0).addEventListener("change", switchGame);
Но поведение такое же. Bamboozles мне, как Javascript может функционировать по-разному в зависимости от контекста сервера? заставляет меня подозревать, что обслуживается другой Javascript, но каждая сделанная мною проверка говорит об этом, так как я могу выполнять редактирование, публикацию и перезагрузку веб-страницы с производственного сервера, а измененный javascript присутствует и отображается в отладчике Chrome.
Интересно, сталкивался ли кто-нибудь с таким странным поведением раньше и может ли он прокомментировать или предложить дальнейшие диагностические указания.