Может кто-нибудь сказать мне, что делает эта функция? - PullRequest
0 голосов
/ 31 марта 2011
function w_cookie_wid(wid02) {
   if ( ! document.cookie) {
      document.cookie = "w_wid=1;path=/";
      if ( ! document.cookie) {
         var w_date = new Date();
         return (w_date.getSeconds() % 20 + 1);
      }
      else return 2 - 1;
   }
   var prefix = wid02 + "=";
   var begin = document.cookie.indexOf("; " + prefix);
   if (begin == - 1) {
      begin = document.cookie.indexOf(prefix);
      if (begin != 0) {
         return null;
      }
   }
   else {
      begin += 2;
   }
   var end = document.cookie.indexOf(";", begin);
   if (end == - 1) {
      end = document.cookie.length;
   }
   return unescape(document.cookie.substring(begin + prefix.length, end));
}

1 Ответ

4 голосов
/ 31 марта 2011

Цель этой функции - попытаться получить значение cookie из файлов cookie страницы. Если файлы cookie не установлены, функция попытается установить значение по умолчанию "w_wid=1;path=/" и вернуть 1. Если файлы cookie не поддерживаются, будет возвращено полуслучайное (основанное на времени) значение от 1 до 20, и файл cookie не будет установлен. Если куки установлены, функция попытается получить значение, соответствующее параметру имени (wid02). Если имя не найдено, функция вернет null, в противном случае возвращается значение.

Функция, аннотированная строкой:

function w_cookie_wid(wid02) {
    //if there are no cookies for this page
    if (!document.cookie) {
        //set a cookie value associated with the root
        document.cookie = "w_wid=1;path=/";
        //if there still are no cookies (not supported/allowed)
        if (!document.cookie) {
            //make a new date representing the current time
            var w_date = new Date();
            //return a number between 1 and 20
            //based on the current time
            return (w_date.getSeconds() % 20 + 1);
        }
        //return 1 if the cookie set was successful
        else return 2 - 1;
    }
    //create the name portion for a cookie value
    var prefix = wid02 + "=";
    //check to see if that value is already set,
    //but not as the first item
    var begin = document.cookie.indexOf("; " + prefix);
    //if it isn't
    if (begin == -1) {
        //check to see if it is set as the first item
        begin = document.cookie.indexOf(prefix);
        //if it isn't set (at all)
        if (begin != 0) {
            //return a null value
            return null;
        }
    }
    //if it IS set somewhere
    else {
        //set begin to be the index of beginning
        //of the name/value pair
        begin += 2;
    }
    //get the index of the first semi-colon after
    //the beginning of the name/value
    var end = document.cookie.indexOf(";", begin);
    //if there isn't one
    if (end == -1) {
        //set the end index as the length of the cookie(s)
        end = document.cookie.length;
    }
    //return the cookie name/value pair string
    return unescape(document.cookie.substring(begin + prefix.length, end));
}

Пожалуйста, не проси нас больше делать уроки.

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