jQuery的Cookie插件是一个强大的 jQuery 用来操作 Cookie 的插件。
大概的使用方法如下
1 | example $.cookie(’name’, ‘value’); |
设置cookie的值,把name变量的值设为value
1 | example $.cookie(’name’, ‘value’, {expires: 7, path: ‘/’, domain: ‘jquery.com’, secure: true }); |
新建一个cookie 包括有效期 路径 域名等
1 | example $.cookie(’name’, ‘value’); |
新建cookie
1 | example $.cookie(’name’, null ); |
删除一个cookie
1 | var account= $.cookie( 'name' ); |
取一个cookie(name)值给myvar
jQuery的Cookie插件下载地址: 115网盘下载
源码在线阅读:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | /** * Cookie plugin * * Copyright (c) 2006 Klaus Hartl (stilbuero.de) * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html * */ /** * Create a cookie with the given name and value and other optional parameters. * * @example $.cookie('the_cookie', 'the_value'); * @desc Set the value of a cookie. * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true }); * @desc Create a cookie with all available options. * @example $.cookie('the_cookie', 'the_value'); * @desc Create a session cookie. * @example $.cookie('the_cookie', null); * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain * used when the cookie was set. * * @param String name The name of the cookie. * @param String value The value of the cookie. * @param Object options An object literal containing key/value pairs to provide optional cookie attributes. * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object. * If a negative value is specified (e.g. a date in the past), the cookie will be deleted. * If set to null or omitted, the cookie will be a session cookie and will not be retained * when the the browser exits. * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie). * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie). * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will * require a secure protocol (like HTTPS). * @type undefined * * @name $.cookie * @cat Plugins/Cookie * @author Klaus Hartl/klaus.hartl@stilbuero.de */ /** * Get the value of a cookie with the given name. * * @example $.cookie('the_cookie'); * @desc Get the value of a cookie. * * @param String name The name of the cookie. * @return The value of the cookie. * @type String * * @name $.cookie * @cat Plugins/Cookie * @author Klaus Hartl/klaus.hartl@stilbuero.de */ jQuery.cookie = function (name, value, options) { if ( typeof value != 'undefined' ) { // name and value given, set cookie options = options || {}; if (value === null ) { value = '' ; options.expires = -1; } var expires = '' ; if (options.expires && ( typeof options.expires == 'number' || options.expires.toUTCString)) { var date; if ( typeof options.expires == 'number' ) { date = new Date(); date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); } else { date = options.expires; } expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE } // CAUTION: Needed to parenthesize options.path and options.domain // in the following expressions, otherwise they evaluate to undefined // in the packed version for some reason... var path = options.path ? '; path=' + (options.path) : '' ; var domain = options.domain ? '; domain=' + (options.domain) : '' ; var secure = options.secure ? '; secure' : '' ; document.cookie = [name, '=' , encodeURIComponent(value), expires, path, domain, secure].join( '' ); } else { // only name given, get cookie var cookieValue = null ; if (document.cookie && document.cookie != '' ) { var cookies = document.cookie.split( ';' ); for ( var i = 0; i < cookies.length; i++) { var cookie = jQuery.trim(cookies[i]); // Does this cookie string begin with the name we want? if (cookie.substring(0, name.length + 1) == (name + '=' )) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break ; } } } return cookieValue; } }; |
然后看了下Discuz!中对cookie的操作方法如下,发现少了个遍历,用;分割的数组的处理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function getcookie(name) { var cookie_start = document.cookie.indexOf(name); var cookie_end = document.cookie.indexOf( ";" , cookie_start); return cookie_start == -1 ? '' : unescape(document.cookie.substring(cookie_start + name.length + 1, (cookie_end > cookie_start ? cookie_end : document.cookie.length))); } function setcookie(cookieName, cookieValue, seconds, path, domain, secure) { var expires = new Date(); expires.setTime(expires.getTime() + seconds); document.cookie = escape(cookieName) + '=' + escape(cookieValue) + (expires ? '; expires=' + expires.toGMTString() : '' ) + (path ? '; path=' + path : '/' ) + (domain ? '; domain=' + domain : '' ) + (secure ? '; secure' : '' ); } |