#javascript #html #css #modal-dialog #display
Вопрос:
Я столкнулся с проблемой с модальным полем, которое я создал.
Позвольте мне сначала изложить весь код в первую очередь.
var modal = document.getElementById("modal");
var close = document.getElementsByClassName("modal-close")[0];
if (modal.style.display == "block") {
sessionStorage.setItem("ModalSeen", "Seen")
}
if (window.performance) {
console.log("Window Performance works fine.")
}
if (performance.getEntriesByType('navigation')[0].type != 'navigate') { // Reload Happened
modal.style.display = "none";
sessionStorage.setItem("ModalSeen", "Seen");
} else {
modal.style.display = "block";
sessionStorage.setItem("ModalSeen", "Not Seen");
}
close.onclick = function() {
modal.style.display = "none";
sessionStorage.setItem("ModalSeen", "Seen");
}
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
sessionStorage.setItem("ModalSeen", "Seen");
}
}
if (sessionStorage.getItem("ModalSeen") == "Seen") {
modal.style.display = "none";
} else if (sessionStorage.getItem("ModalSeen") == "Not Seen") {
modal.style.display = "block";
}
.modal {
display: none;
position: fixed;
z-index: 1;
padding-top: 100px;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgb(0, 0, 0);
background-color: rgba(0, 0, 0, 0.4);
}
.modal-content {
background-color: #fefefe;
margin-left: auto;
margin-right: auto;
margin-top: 2%;
padding: 20px;
border: 1px solid #888;
border-radius: 13px;
width: 33%;
}
.modal-close {
color: #aaaaaa;
float: right;
font-size: 30px;
font-weight: bold;
}
.modal-close:hover,
.modal-close:focus {
color: #000;
text-decoration: none;
cursor: pointer;
}
.modal-img {
width: 20%;
display: block;
margin-left: 41%;
}
.modal-heading {
font-family: Noto Sans KR, sans-serif;
font-size: xx-large;
font-weight: bold;
color: #363636;
margin-left: 36.3%;
}
.modal-txt {
font-family: Noto Sans KR, sans-serif;
font-size: 17px;
color: #363636;
text-align: center;
width: 85%;
margin-left: 7.5%;
}
<div id="modal" class="modal">
<div class="modal-content">
<span class="modal-close">amp;times;</span>
<img class="modal-img" src="icons/Country - Error.png">
<p class="modal-heading">Warning</p>
<p class="modal-txt">Hey! This doesn't work outside of India.</p>
<p class="modal-txt">If you are outside India, you can continue to use the website, but you can't install the app.</p>
</div>
</div>
Я хочу отобразить модальное поле для пользователя, когда пользователь впервые открывает веб-сайт. Я не хочу, чтобы это когда-либо появлялось снова, даже если он обновит страницу или изменит ее. Я хочу, чтобы он появлялся только тогда, когда пользователь открывает новую вкладку и переходит на мой веб-сайт.
В коде HTML и CSS я не верю, что с ним что-то не так.
В JavaScript я использовал sessionStorage (потому что в данном случае это более актуально, чем локальное хранилище), и я поместил ключ как «ModalSeen», и для него есть 2 значения: «Видно» и «Не видно». В конце концов, я поставил условие if: если значение видно, модальное поле больше не должно появляться. Если значение не отображается, модальное значение может появиться снова.
Я много чего перепробовал, но это было лучшее, что я мог сделать.
Не могли бы вы, пожалуйста, помочь мне достичь этого, сделав модальный режим открытым только один раз за весь сеанс вкладки? заранее спасибо!
Ответ №1:
Я думаю, что для этого вам может потребоваться использовать файлы cookie