Настройка тестирования cookie с проблемами Javascript - PullRequest
0 голосов
/ 09 сентября 2011

Итак, в данный момент я работаю над установкой cookie в браузере пользователя ... вот как я это сделал:

    var cookiename = "benjaminpotter_welcome";
    var cookievalue = "visited";
    var date = new Date();
    date.setTime(date.getTime()+604800000)
    var cookieExpiration = date.toGMTString();
    var cookiepath = "; path=/";
    var myCookie = cookiename + "=" + cookievalue + ";expires=" + cookieExpiration + path;
    document.cookie = myCookie;

И вот как я пытался его получить:

    function readCookie(benjaminpotter_welcome) {
     cookieName = cookieName.replace(/([.\\+\-*:\/?!|^${}()\[\]])/g, '\\$1');
     var re = new RegExp('[; ]'+cookieName+'=([^\\s;]*)');
     var sMatch = (' '+document.cookie).match(re);
     if (cookieName && sMatch){ 
     var cookieval = unescape(sMatch[1]);
     }else{
     var cookieval = '';
     };
    };

Дело в том, что он вообще не работает ...

Вот что я хочу сделать ... Я хочу установить cookie в браузере пользователя с именем «benjaminpotter_welcome», имеющим значение «посещения».

Затем мне нужно запросить этот файл cookie (при загрузке следующей страницы) и проверить, является ли он «посещенным», какой код будет выполнен (или в моем случае не выполнен.

Вот часть моего сайта, которая в настоящее время не работает при попытке использовать этот код:

<script type="text/javascript">
        function readCookie(benjaminpotter_welcome) {
         cookieName = cookieName.replace(/([.\\+\-*:\/?!|^${}()\[\]])/g, '\\$1');
         var re = new RegExp('[; ]'+cookieName+'=([^\\s;]*)');
         var sMatch = (' '+document.cookie).match(re);
         if (cookieName && sMatch){ 
         var cookieval = unescape(sMatch[1]);
         }else{
         var cookieval = '';
         };
        };

$(document).ready(function(){

    $("#thanks").fadeOut(0);
    $("#overlay_big").fadeOut(0);
    readCookie();
    if(cookieval == 'visited'){
    }else{
        $("#overlay_big").delay(2000).fadeIn(1000);
    };
});
</script>

1 Ответ

2 голосов
/ 09 сентября 2011

Вы устанавливаете cookieval внутри метода, что делает его закрытой переменной.Попробуйте:

function readCookie(cookieName) {
    cookieName = cookieName.replace(/([.\\+\-*:\/?!|^${}()\[\]])/g, '\\$1');
    var re = new RegExp('[; ]'+cookieName+'=([^\\s;]*)');
    var sMatch = (' '+document.cookie).match(re);

    return cookieName && sMatch ? unescape(sMatch[1]) : '';
};

и ваш DOM-ready:

$(document).ready(function(){
    $("#thanks").fadeOut(0);
    $("#overlay_big").fadeOut(0);
    var cookieval = readCookie("benjaminpotter_welcome");
    if(!cookieval == 'visited'){
        $("#overlay_big").delay(2000).fadeIn(1000);
    };
});

должен это сделать.

Если вы поняли свой код, я могу порекомендовать jquery.cookie плагин для работы с куки с javascript.

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