javascript — модальное всплывающее окно только для новых пользователей — bootstrap, php, js

Надеясь, что кто-то может мне помочь, я попытался сделать свое исследование онлайн, прежде чем спрашивать.

В настоящее время я работаю над (приветственным) модом начальной загрузки, который у меня уже есть. Я работаю в среде php, и я супер нуб к php и js. В настоящее время у меня есть, поэтому он выскакивает только один раз через cookie.

<script type="text/javascript">
$(document).ready(function () {
if (document.cookie.indexOf("shown=true")<0) {
var show = function(){
$('#myModal').modal('show');
};

$(window).load(function(){
var timer = window.setTimeout(show,500);
});
}

document.cookie = "shown=true; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/";
});
</script>

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

То есть: пользователь регистрируется -> регистрация кликов -> пользователь попадает на страницу индекса, где появляется модал начальной загрузки (только один раз).

Есть ли способ сделать это? Я иду об этом правильным путем? Сторона клиента против стороны сервера? Любая помощь будет принята с благодарностью

Заранее спасибо.

capt.poopypants

1

Решение

Если вы собираетесь обрабатывать это на стороне клиента, лучше использовать localStorage. Но если он установлен на стороне клиента, он будет сброшен только после очистки кэша браузера и не будет работать, если второй пользователь зарегистрируется в том же браузере.
Если вы хотите обработать все эти случаи, вы должны получить флаг с сервера, чтобы вы знали, следует ли вам показывать модальное значение или нет.
Но если вы используете подход на стороне клиента, вы можете изменить свой код, удалив куки и используя localStorage:

<script type="text/javascript">
$(document).ready(function() {
var wasModalShown = localStorage.getItem('wasModalShown');
if (!wasModalShown) {
localStorage.setItem('wasModalShown', true);
var show = function() {
$('#myModal').modal('show');
};

$(window).load(function() {
var timer = window.setTimeout(show, 500);
});
}
});
</script>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]