http://learn.javascript.ru/comparison
Цитата:
$(document).ready(function () { if(!getCookie('iWas')) { setTimeout( function(){ document.getElementById('popup').style.display='block'; setCookie('iWas', 'here'); } , 1000); }; }); функции getCookie и setCookie не расшифровываю для краткости. Можете написать свои, можете использовать эти, например http://learn.javascript.ru/cookie |
Так и не пойму, зачем эти танцы с куками если есть серверный язык и сессия (читай сеанс)...
|
BETEPAH,
Спасибо за помощь, работает. Все протестил и все отлично. Но вылезла одна загвоздка. Все работает безупречно на локалхосте. А когда перенес на сервер, работать перестало. Путем перебора 1000 отличий - нашел что на это как то влияет строчка которая подключается выше чем подключается jquery.cookies. Это строчка: <script type="text/javascript" async="" src="http://www.google-analytics.com/ga.js" style=""></script> Может это быть причиной и какова природа этого? Я вижу два варианта - как то перенести эту строчку ниже, или (чего не хочется) отказаться от этого аналитикса вообще. Есть другие варианты? |
Round,
сделайте на сервере тестовую страницу, на которой код будет работать неадекватно и дайте, пожалуйста, сюда ссылку. |
function setcookie(a,b,c) {if(c){var d = new Date();d.setTime(d.getTime()+c);}if(a && b) document.cookie = a+'='+b+';path=/'+(c ? '; expires='+d.toUTCString() : '');else return false;} function getcookie(a) {var b = new RegExp(a+'=([^;]){1,}');var c = b.exec(document.cookie);if(c) c = c[0].split('=');else return false;return c[1] ? c[1] : false;} //ставим кук на сессию setcookie('first_visit',true); var first_visit = getcookie('first_visit'); if(first_visit) alert('"first_visit" - Кук есть') function setcookie(a,b,c) {if(c){var d = new Date();d.setTime(d.getTime()+c);}if(a && b) document.cookie = a+'='+b+';path=/'+(c ? '; expires='+d.toUTCString() : '');else return false;} function getcookie(a) {var b = new RegExp(a+'=([^;]){1,}');var c = b.exec(document.cookie);if(c) c = c[0].split('=');else return false;return c[1] ? c[1] : false;} //Проверяем установленное предыдущим скриптом var first_visit = getcookie('first_visit'); if(first_visit) alert('"first_visit" - Кук есть') |
Deff,
Спасибо за ещё один вариант. BETEPAH, Вчера весь день возился с этим глюком. Перенести этот гугланалитикс не вышло и убрать его нельзя, он мне нужен. В итоге, я поменял код обработки куков но результат остался тот же - на локалхосте работает, а на сервере глючит. Вот ссылка на главную страницу, на которой этот попап: http://hostultimo.com/preview/c/oxen/ Возможно, можно какой то костыль поставить? Сейчас попап появляется на пару секунд и пропадает, если зайти повторно. Новый код выглядит вот так: // 'Delete' cookie for testing function deleteCookie() { if(typeof(Storage) !== "undefined"){ sessionStorage.returnVisit = "false"; console.log("sessionStorage set."); } else{ setCookie("return_visit","false",1); } } //W3 Schools setCookie function function setCookie(c_name,value,exdays) { var exdate=new Date(); exdate.setDate(exdate.getDate() + exdays); var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); document.cookie = c_name + "=" + c_value; } //W3 Schools getCookie function function getCookie(c_name) { var c_value = document.cookie; var c_start = c_value.indexOf(" " + c_name + "="); if (c_start == -1) { c_start = c_value.indexOf(c_name + "="); } if (c_start == -1) { c_value = null; } else { c_start = c_value.indexOf("=", c_start) + 1; var c_end = c_value.indexOf(";", c_start); if (c_end == -1) { c_end = c_value.length; } c_value = unescape(c_value.substring(c_start,c_end)); } return c_value; } //Check return_visit cookie on page load function bodyOnload() { if(getCookie("return_visit") === 'true' || sessionStorage.returnVisit === "true"){ //Do something if user has already visited page var test = document.getElementById("test"); test.style.display = "none"; } else { if(typeof(Storage) !== "undefined"){ sessionStorage.returnVisit = "true"; console.log('Session Storage set.'); } else{ setCookie("return_visit","true",1); } } } $(document).ready(function () { var delay_popup = 1000; setTimeout("document.getElementById('parent_popup').style.display='block'", delay_popup); }); А попап обернул ещё раз. <div id="test"> <div id="parent_popup" class="popup-slider"> <div id="popup"> <?php if(function_exists('show_flexslider_rotator')) echo show_flexslider_rotator( 'popup' );?> <a class="close_popup" title="Close" onclick="document.getElementById('parent_popup').style.display='none';">CLOSE X</a> </div> </div> </div> |
Цитата:
// 'Delete' cookie for testing function deleteCookie() { if(typeof(Storage) !== "undefined"){ sessionStorage.returnVisit = "false"; console.log("sessionStorage set."); } else{ setCookie("return_visit","false",1); } } //W3 Schools setCookie function function setCookie(c_name,value,exdays) { var exdate=new Date(); exdate.setDate(exdate.getDate() + exdays); var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); document.cookie = c_name + "=" + c_value; } //W3 Schools getCookie function function getCookie(c_name) { var c_value = document.cookie; var c_start = c_value.indexOf(" " + c_name + "="); if (c_start == -1) { c_start = c_value.indexOf(c_name + "="); } if (c_start == -1) { c_value = null; } else { c_start = c_value.indexOf("=", c_start) + 1; var c_end = c_value.indexOf(";", c_start); if (c_end == -1) { c_end = c_value.length; } c_value = unescape(c_value.substring(c_start,c_end)); } return c_value; } //Check return_visit cookie on page load function bodyOnload() { if(getCookie("return_visit") === 'true' || sessionStorage.returnVisit === "true"){ //Do something if user has already visited page var test = document.getElementById("test"); test.style.display = "none"; } else { if(typeof(Storage) !== "undefined"){ sessionStorage.returnVisit = "true"; console.log('Session Storage set.'); } else{ setCookie("return_visit","true",1); } } } $(document).ready(function () { var delay_popup = 1000; setTimeout("document.getElementById('parent_popup').style.display='block'", delay_popup); });Во-первых, куки вы выставляете не сессионные, а на 1 день. Во-вторых, вы при загрузке страницы запускаете таймер, который через одну секунду должен показать попап, и тут же делаете проверку наличия куки? Зачем? Я же привел выше код. Сначала делайте проверку, а потом запускайте таймер попапа, если есть необходимость |
Я согласен, с тем что там сейчас много каши... Но это пока что тестовый вариант и я его всячески мучаю, по этому там могут быть накладки. Все замечания по ошибкам я принимаю с благодарностью. :thanks:
Да, и там ещё была кнопка которой я сбрасывал куки, что бы каждый раз не переоткрывать окно браузера. |
Цитата:
Переделайте логику скрипта. Сделайте так, как я написал выше - сначала проверка, затем вызов |
BETEPAH,
ага, я наверное перегрелся и протупил с этим моментом... Цитата:
|
Часовой пояс GMT +3, время: 09:18. |