Предполагая, что ваша функция отлично работает, вы можете попробовать это:
1) При загрузке страницы, проверьте свой собственный печенья (который вы истекает через 30 дней, когда вы создаете его)
.
2) Если вы найдете файл cookie, все готово. Пользователь просмотрел ваш опрос за последние 30 дней.
3) Если нет печенья, подождите 30 секунд, установите срок действия файла cookie в течение 30 дней и покажите опрос.
<script>
function showSurvey() {
console.log('About to show survey...');
// put your survey popup function here
}
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 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;
}
function checkCookie() {
var cookieToCheck = getCookie("myCookie");
if (cookieToCheck !== "") {
console.log('Do nothing; user has cookie.');
} else {
setTimeout(function() { // do this after 30 seconds
setCookie("myCookie", "foo", 30); // set your cookie
showSurvey();
}, 30000);
}
}
checkCookie(); // check the cookie on page load
</script>
Обратите внимание, что если пользователь перезагрузит страницу, они собираются убить ваш setTimeout(). Если вам нужно иметь дело с перезагрузкой страницы, вам понадобится сеанс на стороне сервера или другой куки-файл, чтобы отслеживать время, которое пользователь находился на сайте. Затем вы решите на сервере, если пользователь должен увидеть опрос. Без лучшего понимания вашей среды это простое клиентское решение - все, что я могу вам предложить.