Я бы хотел, чтобы впервые посетители моего сайта увидели всплывающее окно приветствия, которое отображается не чаще одного раза в год, если только они не удаляют свои данные для просмотра.
Ради производительности (а также обучение), я не хочу вызывать какие-либо внешние библиотеки JavaScript.
Мой код ниже устанавливает cookie с датой истечения срока действия и логическим значением для того, посетил ли пользователь ранее значение true, а затем вызывает этот cookie, чтобы скрыть модальный div, если значение уже истинно.
Я был бы благодарен, если бы сообщество помогло мне понять проблему с моим JavaScript.Прежде всего, Jsfiddle запускает его не так, как в локальной версии, хотя код тот же, и я совершенно не понимаю, почему.
<script type="text/javascript">
// set a cookie on the load event, which expires after a year
window.onload = function() {
var expiryTime = new Date();
expiryTime.setFullYear(expiryTime.getFullYear() + 1);
document.cookie = "visited=true; expires=" + expiryTime.toUTCString() + ";";
}
// function to hide the modal div
function hideModal() {
document.getElementById("modal").style.display = "none";
}
// read the cookie and hide the modal div if the value of visitedKey is true
function inspectCookie() {
var visitedKey = "visited=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(visitedKey) == true) {
hideModal()
}
}
}
// run the cookie checking function as soon as the parser hits it - rather than waiting for the whole page to render then hiding the modal div
inspectCookie();
</script>
<style type="text/css">
#modal,
h3 {
display: block;
position: absolute;
}
#modal {
z-index: 1;
width: 60%;
padding: 5%;
background-color: #aaa;
color: #644;
}
h3 {
z-index: 0;
}
</style>
<div id="modal">
<h1>
Welcome!
</h1>
<p>
This is a modal pop up which should only appear on the user's first visit!
</p>
<a href="#" onclick="hideModal()">close</a>
</div>
<h3>This is the content of the page.</h3>
jsfiddle, с которым я работал, находится здесь: http://jsfiddle.net/zLbcwpdv/34/