Я не сразу вижу проблему, но у меня есть несколько советов о том, что может помочь вам приблизиться как к лучшему коду, так и к тому, что легче диагностировать.
Я вижу много дублирования кода. Необходимо ли иметь два разных события окна onload
, которые оба смотрят на реферер и затем решают, какой модал отображать? Я рекомендую делать все это в одном обработчике onload
, который смотрит на document.referrer
только один раз, а затем определяет, какой модал отображать (если есть).
Что-то вроде:
$( window ).on('load', function() {
console.log("park modal firing");
// define your parkReferrers and closureReferrers here
const referrer = document.referrer;
const displayParkReferrerModal = parkReferrers.includes(referrer);
const displayClosureModal = closureReferrers.includes(referrer);
let modalToDisplay;
if (displayParkReferrerModal) {
modalToDisplay = '#parkModal';
} else if (displayClosureModal) {
modalToDisplay = '#closureModal .closure';
}
if (modalToDisplay) {
console.log(modalToDisplay);
$(modalToDisplay).modal({
backdrop: 'static',
keyboard: false,
show: true
});
return;
}
console.log('no matching modal to display');
return;
});
Надеюсь, это полезно. Вы также можете абстрагировать это с помощью функции handleReferrerModal, которую затем вызываете в обработчике load
. Это может быть чище, если на load
.
происходит несколько разных вещей.