2011-03-31 123 views
0
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)); 
} 
+0

你從哪裏得到ti? – Neal 2011-03-31 18:07:55

+0

哈哈...有趣的結構 – Mika 2011-03-31 18:11:48

+5

它引發StackOverflow downvotes。 – Ender 2011-03-31 18:26:57

回答

4

此功能的目的是嘗試從頁面cookie中檢索cookie值。如果沒有設置cookie,該功能將嘗試設置默認值"w_wid=1;path=/"並返回1。如果不支持cookie,則會返回1到20之間的半隨機(基於時間)值,並且不會設置cookie。如果設置了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)); 
} 

請不要問我們做的功課了。

+0

+1爲了花時間分析每一行。 – 2011-03-31 19:06:31

相關問題