cookie.js
来自「进行ajax开发sdsd s d sd s」· JavaScript 代码 · 共 159 行
JS
159 行
/** * 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 < 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('&'); // Break it into an array of name/value pairs for(var i=0; i < 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 < 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 += '&'; 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) != '$' && 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; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?