简体   繁体   中英

Can anyone please tell me what does this funciton do?

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));
}

The purpose of this function is to attempt to retrieve a cookie value from the page cookies. If no cookies are set, the function will attempt to set a default value of "w_wid=1;path=/" and return 1 . If cookies are not supported, a semi-random (time based) value between 1 and 20 will be returned, and no cookie will be set. If cookies are set, the function will try to retrieve the value corresponding to the name parameter ( wid02 ). If the name is not found, the function will return null , otherwise the value is returned.

The function, annotated by line:

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));
}

Please don't ask us to do your homework anymore.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM