Мой модальный диалог Bootstrap отображается так, как задумано, каждый раз, когда я нажимаю, чтобы запустить его, проблема в том, что «показанное» событие не всегда срабатывает.
После того, как модал отображается, необходимо запустить функцию javascript, чтобы отобразить карту внутри одного из модальных DIV, но для того, чтобы это было возможно, модал (и, следовательно, его HTML) должен быть полностью отрендерен для что Javascript может вставлять элементы в DOM.
Чтобы убедиться, что модальное изображение полностью отрендерено, используется событие bs.modal.shown . Это событие вызывается только тогда, когда модал полностью построен, поэтому это событие используется для вызова функции, которая загружает карту.
Было очевидно, что это событие не всегда срабатывает, так как иногда, когда модал был запущен, карта не отображалась в модале. Помещение журнала в консоль для события bs.modal.shown показало, что это определенно событие, которое не запускается, а не сбой в функции, которая вызывается для отображения карты.
При использовании Chrome DevTools нет ошибок или предупреждений, отображаемых, когда указанное событие не срабатывает.
Может быть интересно отметить, что это событие срабатывает в 95% случаев на моем компьютере разработчика при отладке, но только в 50% случаев при развертывании в нашей тестовой среде веб-сервера IIS.
Мое приложение представляет собой ASP.Net MVC SPA, поэтому мой модальный HTML частично определен на странице макета:
<div class="modal fade" id="modal-container" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content" id="modalDiv">
</div>
</div>
</div>
А затем определяется частичное представление, которое вводится в модал:
<div class="modal-body padding-sm">
@using (Html.BeginForm("PV_flowModelDialog", "Home", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
Тогда в Javascript на модале у меня есть
$('#modal-container').on('shown.bs.modal', function () {
console.log("Modal container shown.")
<....function calls here...>
})
Затем я использую обработчик событий «скрытый», чтобы подтвердить, что журнал модальный скрыт (в дополнение к тому, что модальный видимо скрыт). Это событие происходит последовательно:
$('#modal-container').one('hidden.bs.modal', function () {
console.log("hidden.bs.modal event.")
})
Итак, вопрос в том, что может вызывать показанное событие только с перерывами? Будем весьма благодарны за любые идеи о том, что может вызвать это, или о том, как можно продолжить расследование этого или обходного пути для обеспечения того, чтобы каждый раз происходило это (или эквивалентное) возгорание.
Спасибо!