Подтверждение возраста всплывающее окно, чтобы показать только один раз - PullRequest
0 голосов
/ 14 сентября 2018

Итак, у меня есть всплывающее окно подтверждения возраста на веб-странице, которое будет отображаться на любой веб-странице, на которой вы находитесь.У меня проблема в том, что я не могу понять, как показать это только на первой странице пользователя.Я пытался использовать cookie-файлы для достижения этой цели, но не смог понять, как адаптировать текущий код, который у меня есть.Мне нужно решение, которое не потребует плагинов, если это возможно.Заранее спасибо.

<script type="text/javascript" src="https://code.jquery.com/jquery-1.8.2.js"></script>
<style type="text/css">
#overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #000;
filter:alpha(opacity=70);
-moz-opacity:0.7;
-khtml-opacity: 0.7;
opacity: 0.7;
z-index: 100;
display: none;
}
.cnt223 a{
text-decoration: none;
}
.popup{
width: 100%;
margin: 0 auto;
display: none;
position: fixed;
z-index: 101;
}
.cnt223{
min-width: 600px;
width: 600px;
min-height: 150px;
margin: 100px auto;
background: #f3f3f3;
position: relative;
z-index: 103;
padding: 15px 35px;
border-radius: 5px;
box-shadow: 0 2px 5px #000;
}
.cnt223 p{
clear: both;
    color: #555555;
    /* text-align: justify; */
    font-size: 20px;
    font-family: sans-serif;
}
.cnt223 p a{
color: #d91900;
font-weight: bold;
}
.cnt223 .x{
float: right;
height: 35px;
left: 22px;
position: relative;
top: -25px;
width: 34px;
}
.cnt223 .x:hover{
cursor: pointer;
}
</style>
<script type='text/javascript'>
$(function(){
var overlay = $('<div id="overlay"></div>');
overlay.show();
overlay.appendTo(document.body);
$('.popup').show();
$('.close').click(function(){
$('.popup').hide();
overlay.appendTo(document.body).remove();
return false;
});




$('.x').click(function(){
$('.popup').hide();
overlay.appendTo(document.body).remove();
return false;
});
});
</script>
<script>
function goBack() {
    window.history.go(-2);
}
</script>
<div class='popup'>
<div class='cnt223'>
<h1>Important Notice</h1>
<p>
You must be over 18 to Purchase products on this website!
<br/>
<br/>
<a href='' class='close' style="color:green">I Am Over 18</a>
<a href='' class='goBack()' style="color:red">I Am Not</a>
</p>
</div>
</div>

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

Я бы порекомендовал куки для этого, но вы также можете пойти с:

LocalStorage или SessionStorage

И то и другое одинаково, но отличается тем, как долго они будут храниться в браузере. Таким образом, вы можете хранить что-то вроде этого:

sessionStorage.setItem("ageverified", "yes");

Чтобы проверить значение перед отображением наложения, вы можете получить значение следующим образом:

var ageverified = sessionStorage.getItem("ageverified");

Конечно, проверка вашего возраста должна выполняться на стороне сервера.

0 голосов
/ 14 сентября 2018

Вы помещаете куки при загрузке страницы и на всех страницах, которые вы проверяете, существует ли этот куки. Если cookie уже установлен, пропустите всплывающее окно.

JSFiddle: https://jsfiddle.net/tx9w4apf/

Замените свой JavaScript следующим кодом:

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

function getCookie(cname) {
    var name = cname + "=";
    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);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}
$(function(){
var cookie = getCookie("agepopshown");
if(cookie ===1)
{
var overlay = $('<div id="overlay"></div>');
overlay.show();
overlay.appendTo(document.body);
$('.popup').show();
$('.close').click(function(){
$('.popup').hide();
overlay.appendTo(document.body).remove();
return false;
});




$('.x').click(function(){
$('.popup').hide();
overlay.appendTo(document.body).remove();
return false;
});
}
setCookie("agepopshown", 1,  365 );

});

function goBack() {
    window.history.go(-2);
}
0 голосов
/ 14 сентября 2018

Использование файлов cookie - правильный подход.Вы можете установить простой файл cookie, например, document.cookie = "verified=true";, который устанавливается после успешного подтверждения возраста.

В начале каждой страницы проверяйте, существует ли файл cookie, и если document.cookie == "verified=true"

Обратите внимание, что любое ограничение доступа, выполненное с помощью JavaScript, может быть легко обойдено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...