Я бы дал каждому модалу идентификатор (по возрастанию) и сохранил идентификатор последнего модала, который пользователь отклонил. Таким образом, если модальное состояние не меняется в течение 48 часов вместо 24, пользователю снова не будет показано модальное значение.
var popupId = 42; // This is the number that changes when the content changes
if (+localStorage.dismissedPopup !== popupId) {
// Either the user has never dismissed one of these, or it's not the most recent one
window.setTimeout(popupShown, 1500);
}
function closeModal() {
element.classList.add("hide-modal");
// Remember the ID of the most recent modal the user dismissed
localStorage.dismissedPopup = popupId;
}
Если вы хотите управлять этим с HTML, идентификатор может исходить из атрибута data-*
:
<div id="pageDiv" data-popup-id="42">An important update about...</div>
Тогда:
var popupId = +element.getAttribute("data-popup-id");
Но если вы хотите, чтобы он основывался на времени, сохраните время, когда оно было отклонено в последний раз :
if (!localStorage.lastPopupDismissed ||
(Date.now() - localStorage.lastPopupDismissed) > (24 * 60 * 60 * 1000))) {
window.setTimeout(popupShown, 1500);
}
function closeModal() {
element.classList.add("hide-modal");
// Remember the ID of the most recent modal the user dismissed
localStorage.lastPopupDismissed = Date.now();
}