Показать сообщение отдельно
  #16 (permalink)  
Старый 13.04.2023, 07:19
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Так себе решение.
А если на сервере запор, а в сети пробки, и за секунду ответ не пришел?
Опять ошибка будет.

Так попробуйте
function getCookie(name) {
    let matches = document.cookie.match(new RegExp(
        "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
    ));
    return matches ? decodeURIComponent(matches[1]) : undefined;
}

function closeListener (tbeg) {
	const closeButton = document.querySelector(".fancybox-close")
	if (closeButton) {
		closeButton.addEventListener("click", function() {
			if ('modalwin' in window) {
				modalwin.style.display = "none";
			}
			// записываем cookie на 1 день, с которой мы не показываем окно
			let date = new Date;
			date.setDate(date.getDate() + 1);
			document.cookie = "mcookie=no; path=/; expires=" + date.toUTCString();
		});
	} else {
		if (Date.now() - tbeg > 8000)  {
			console.error('Сервер не отвечает')
			return;
		}
		setTimeout (closeListener, 100, tbeg);
	}
}

document.addEventListener('DOMContentLoaded', function() {
    let mcookie = getCookie("mcookie");
    if (mcookie != "no") {
        setTimeout(function() {
            showModal("obratnyij-zvonok/");
            closeListener(Date.now())
        }, 15000);
    }
});

Последний раз редактировалось voraa, 13.04.2023 в 09:24.
Ответить с цитированием