display.php-n=19-2&f=19-cookie.js.htm

来自「javascript 5 随书源码 javascript」· HTM 代码 · 共 284 行

HTM
284
字号
<html><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Keywords" name="Keywords"content="JavaScript, examples, JavaScript: The Definitive Guide"><title>Example 19-2 from JavaScript: The Definitive Guide, Fifth Edition</title><style>body {  font-family: arial, sans-serif}.lefttitle {  font: bold x-small arial, sans-serif;  margin: 5px;  letter-spacing: .15em;  text-transform:uppercase;}.leftcaption {  font: italic x-small sans-serif;  margin-bottom: 20px;}#banner {	font-family:sans-serif;	color:#333;	font-size:x-large;	font-weight:normal;		padding:15px;	padding-top: 3px;        border-bottom:4px double #666;}#banner h1 {	font-size: x-large;	margin: 0px;	padding: 0px;}#banner .description {	font-size:large;	margin-left: 2px;}pre {  border: solid black 1px;  background-color: #ddd;  padding: 10px;  margin: 0px;}	</style></script></head><body><div id="banner"><h1>davidflanagan.com/javascript5</h1><span class="description">Example 19-2 from<i>JavaScript: The Definitive Guide, Fifth Edition</i></span></div><div style="float: left; text-align: center; width:200px; margin-right:20px"><div class="lefttitle">Buy The Book</div><iframe src="../../rcm.amazon.com/e/cm-t=davidflanagancom&o=1&p=8&l=as1&asins=0596101996&fc1=000000&IS2=1&lt1=_blank&lc1=0000ff&bc1=000000&bg1=ffffff&f=ifr" tppabs="http://rcm.amazon.com/e/cm?t=davidflanagancom&o=1&p=8&l=as1&asins=0596101996&fc1=000000&IS2=1&lt1=_blank&lc1=0000ff&bc1=000000&bg1=ffffff&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><div class="leftcaption">This example is posted here for the convenienceof my readers.</div><div class="lefttitle">Tip the Author</div><form action="https://www.paypal.com/cgi-bin/webscr" method="post"><input type="hidden" name="cmd" value="_s-xclick"><input type="image" src="../../www.paypal.com/en_US/i/btn/x-click-but21.gif" tppabs="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"><img alt="" border="0" src="../../www.paypal.com/en_US/i/scr/pixel.gif" tppabs="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"><input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----"></form><div class="leftcaption">Found a helpful example, but don't own the book?</div><div class="lefttitle">Advertising</div><script type="text/javascript"><!--google_ad_client = "pub-5162555666633441";google_alternate_color = "ffffff";google_ad_width = 160;google_ad_height = 600;google_ad_format = "160x600_as";google_ad_type = "text_image";google_ad_channel ="";//--></script><script type="text/javascript"  src="../../pagead2.googlesyndication.com/pagead/show_ads.js" tppabs="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script></div><div style="margin-left: 220px;"><div class="lefttitle" style="padding:0px; text-align: right"><a href="index.html" tppabs="http://www.davidflanagan.com/javascript5/index.html">Table of Examples</a></div><pre>/** * This is the Cookie() constructor function. * * This constructor looks for a cookie with the specified name for the * current document.  If one exists, it parses its value into a set of * name/value pairs and stores those values as properties of the newly created * object. * * To store new data in the cookie, simply set properties of the Cookie * object.  Avoid properties named "store" and "remove" since these are  * reserved as method names. *  * To save cookie data in the web browser's local store, call store(). * To remove cookie data from the browser's store, call remove(). * * The static method Cookie.enabled() returns true if cookies are * enabled and returns false otherwise. */function Cookie(name) {    this.$name = name;  // Remember the name of this cookie    // First, get a list of all cookies that pertain to this document    // We do this by reading the magic Document.cookie property    // If there are no cookies, we don't have anything to do     var allcookies = document.cookie;    if (allcookies == "") return;    // Break the string of all cookies into individual cookie strings    // Then loop through the cookie strings, looking for our name    var cookies = allcookies.split(';');    var cookie = null;    for(var i = 0; i &lt; cookies.length; i++) {        // Does this cookie string begin with the name we want?        if (cookies[i].substring(0, name.length+1) == (name + "=")) {            cookie = cookies[i];            break;        }    }    // If we didn't find a matching cookie, quit now    if (cookie == null) return;    // The cookie value is the part after the equals sign    var cookieval = cookie.substring(name.length+1);    // Now that we've extracted the value of the named cookie, we    // must break that value down into individual state variable     // names and values. The name/value pairs are separated from each    // other by ampersands, and the individual names and values are    // separated from each other by colons. We use the split() method    // to parse everything.    var a = cookieval.split('&amp;'); // Break it into an array of name/value pairs    for(var i=0; i &lt; a.length; i++)  // Break each pair into an array        a[i] = a[i].split(':');    // Now that we've parsed the cookie value, set all the names and values    // as properties of this Cookie object. Note that we decode    // the property value because the store() method encodes it    for(var i = 0; i &lt; a.length; i++) {        this[a[i][0]] = decodeURIComponent(a[i][1]);    }}/** * This function is the store() method of the Cookie object. * * Arguments: * *   daysToLive: the lifetime of the cookie, in days. If you set this *     to zero, the cookie will be deleted.  If you set it to null, or  *     omit this argument, the cookie will be a session cookie and will *     not be retained when the browser exits.  This argument is used to *     set the max-age attribute of the cookie. *   path: the value of the path attribute of the cookie *   domain: the value of the domain attribute of the cookie *   secure: if true, the secure attribute of the cookie will be set */Cookie.prototype.store = function(daysToLive, path, domain, secure) {    // First, loop through the properties of the Cookie object and    // put together the value of the cookie. Since cookies use the    // equals sign and semicolons as separators, we'll use colons    // and ampersands for the individual state variables we store     // within a single cookie value. Note that we encode the value    // of each property in case it contains punctuation or other    // illegal characters.    var cookieval = "";    for(var prop in this) {        // Ignore properties with names that begin with '$' and also methods        if ((prop.charAt(0) == '$') || ((typeof this[prop]) == 'function'))             continue;        if (cookieval != "") cookieval += '&amp;';        cookieval += prop + ':' + encodeURIComponent(this[prop]);    }    // Now that we have the value of the cookie, put together the     // complete cookie string, which includes the name and the various    // attributes specified when the Cookie object was created    var cookie = this.$name + '=' + cookieval;    if (daysToLive || daysToLive == 0) {         cookie += "; max-age=" + (daysToLive*24*60*60);    }    if (path) cookie += "; path=" + path;    if (domain) cookie += "; domain=" + domain;    if (secure) cookie += "; secure";    // Now store the cookie by setting the magic Document.cookie property    document.cookie = cookie;}/** * This function is the remove() method of the Cookie object; it deletes the * properties of the object and removes the cookie from the browser's  * local store. *  * The arguments to this function are all optional, but to remove a cookie * you must pass the same values you passed to store(). */Cookie.prototype.remove = function(path, domain, secure) {    // Delete the properties of the cookie    for(var prop in this) {        if (prop.charAt(0) != '$' &amp;&amp; typeof this[prop] != 'function')             delete this[prop];    }    // Then, store the cookie with a lifetime of 0    this.store(0, path, domain, secure);}/** * This static method attempts to determine whether cookies are enabled. * It returns true if they appear to be enabled and false otherwise. * A return value of true does not guarantee that cookies actually persist. * Nonpersistent session cookies may still work even if this method  * returns false. */Cookie.enabled = function() {    // Use navigator.cookieEnabled if this browser defines it    if (navigator.cookieEnabled != undefined) return navigator.cookieEnabled;    // If we've already cached a value, use that value    if (Cookie.enabled.cache != undefined) return Cookie.enabled.cache;    // Otherwise, create a test cookie with a lifetime    document.cookie = "testcookie=test; max-age=10000";  // Set cookie    // Now see if that cookie was saved    var cookies = document.cookie;    if (cookies.indexOf("testcookie=test") == -1) {        // The cookie was not saved        return Cookie.enabled.cache = false;    }    else {        // Cookie was saved, so we've got to delete it before returning        document.cookie = "testcookie=test; max-age=0";  // Delete cookie        return Cookie.enabled.cache = true;    }}</pre><div class="lefttitle" style="padding:0px; text-align: right"><a href="index.html" tppabs="http://www.davidflanagan.com/javascript5/index.html">Table of Examples</a></div><p><script type="text/javascript">amazon_ad_tag="davidflanagancom"; amazon_ad_width="300"; amazon_ad_height="250"; amazon_ad_logo="hide";</script><script type="text/javascript" src="../../www.assoc-amazon.com/s/ads.js" tppabs="http://www.assoc-amazon.com/s/ads.js"></script></div></body></html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?