2013-03-14 5 views
0

Я пытаюсь получить одноразовое предупреждение, когда пользователь посещает веб-сайт, а затем помещает файл cookie, чтобы они не раздражали его каждый раз, когда они возвращались на сайт. Файл cookie сохраняется и выполняется предупреждение, но оно выполняется KEEPS, и я отрываю свои волосы.Одноразовое предупреждение продолжает выполнять

Я пробовал несколько вещей, найденных в Интернете (StackExchange, как я люблю тебя), но никто не работает. Вот текущее состояние:

<script> 
    function setCookie(name, value, days) 
    { 
     if (days) 
     { 
     var date = new Date(); 
     date.setTime(date.getTime()+days*24*60*60*1000); 
     var expires = "; expires=" + date.toGMTString(); 
     } 
     else 
     var expires = ""; 
     document.cookie = name+"=" + value+expires + ";path=/"; 
    } 
</script> 

<body> 
    <script type="text/javascript"> 
     if(!setCookie('testcookie')) { 
      alert("hello world"); 
      setCookie('testcookie','1',3); 
     } 
    </script> 
</body> 

Рассматривая записи файлов cookie, кажется, что они устанавливаются каждый раз. Если я изменяю дату истечения срока действия скрипта, он каждый раз меняет консоль dev. Не уверен, что это указывает на проблему или нет.

===== END РЕШЕНИЕ ======

я пропускал вызов getCookie. Я также понял, что при попытке добавить его в скрипты заголовка выполнение должно быть его собственной функцией * facepalm *. Я также добавил все скрипты в заголовок и вместо этого вызываю функцию в теге body.

<head> 
    <script> 
     function setCookie(name, value, days) { 
      if (days) { 
       var date = new Date(); 
       date.setTime(date.getTime()+days*24*60*60*1000); 
       var expires = "; expires=" + date.toGMTString(); 
      } 
      else 
       var expires = ""; 
       document.cookie = name+"=" + value+expires + ";path=/"; 
     } 

     var getCookie = function (c_name) { 
      var i, x, y, ARRcookies = document.cookie.split(";"); 
      for (i = 0; i < ARRcookies.length; i++) { 
       x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("=")); 
       y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1); 
       x = x.replace(/^\s+|\s+$/g, ""); 
       if (x == c_name) { 
        return unescape(y); 
       } 
      } 
     }; 

     function checkCookie() { 
      if(!getCookie('testcookie2')) { 
       alert("hello world"); 
       setCookie('testcookie2','1',3); 
      } 
     } 
    </script> 
</head> 
<body onload="checkCookie()"> 
</body> 

TA-DA!

+1

Вы всегда заходящим куки, но не существующий поиском информации куков , –

+0

У ftr w3schools есть много плохой информации, включая, казалось бы, приличную плохую информацию, не считайте их надежным источником. – djechlin

+0

Да, я нашел, что это хорошее место для начала, но часто они опускают мелкие детали, которые имеют огромное значение при обучении или не имеют достаточного количества примеров, чтобы действительно помочь решить вашу проблему. этот форум оказался бесценным, хотя! –

ответ

0

Я использую немного яваскрипта функции иногда, чтобы получить печенье

var getCookie = function (c_name) { 
    var i, x, y, ARRcookies = document.cookie.split(";"); 
    for (i = 0; i < ARRcookies.length; i++) { 
     x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("=")); 
     y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1); 
     x = x.replace(/^\s+|\s+$/g, ""); 
     if (x == c_name) { 
      return unescape(y); 
     } 
    } 
}; 

вы можете использовать это в сочетании с другой логикой

if(!getCookie('testcookie')) { 
    alert("hello world"); 
    setCookie('testcookie','1',3); 
} 
+0

Я думал, что должен также упомянуть, я получил эту функцию с сайта w3Schools: http://www.w3schools.com/js/js_cookies.asp. Существуют также примеры функций для setCookie(), getCookie() и checkCookie(). – Melon

+0

Спасибо, это помогло мне * почти * там. Моя проблема с примером w3Schools заключается в том, что он добавляет значение (имя пользователя) и проверяет оба. Но мое предупреждение будет просто «нормально», поэтому нет никакой ценности для проверки. Когда я удаляю этот бит, cookie, похоже, не устанавливается. Использование моей оригинальной функции '! GetCookie' тоже не работало. В этом случае он устанавливается каждый раз. –

+0

Ничего, я понял! Я уточню свой вопрос с окончательным решением для тех, кому нужны более точные ответы. Спасибо! –

Смежные вопросы