/*!
* jQuery Cookie Plugin v1.4.0
* https://github.com/carhartl/jquery-cookie
*
* Copyright 2013 Klaus Hartl
* Released under the MIT license
* Usage
Create session cookie:
$.cookie(\'the_cookie\', \'the_value\');
Create expiring cookie, 7 days from then:
$.cookie(\'the_cookie\', \'the_value\', { expires: 7 });
Create expiring cookie, valid across entire site:
$.cookie(\'the_cookie\', \'the_value\', { expires: 7, path: \'/\' });
Read cookie:
$.cookie(\'the_cookie\'); // => "the_value"
$.cookie(\'not_existing\'); // => undefined
Read all available cookies:
$.cookie(); // => { "the_cookie": "the_value", "...remaining": "cookies" }
Delete cookie:
// Returns true when cookie was found, false when no cookie was found...
$.removeCookie(\'the_cookie\');
// Same path as when the cookie was written...
$.removeCookie(\'the_cookie\', { path: \'/\' });
*/
(function(factory) {
if (typeof define === \'function\' && define.amd) {
// AMD. Register as anonymous module.
define([\'jquery\'], factory);
} else {
// Browser globals.
factory(jQuery);
}
}(function($) {
var pluses = /\+/g;
function encode(s) {
return config.raw ? s : encodeURIComponent(s);
}
function decode(s) {
return config.raw ? s : decodeURIComponent(s);
}
function stringifyCookieValue(value) {
return encode(config.json ? JSON.stringify(value) : String(value));
}
function parseCookieValue(s) {
if (s.indexOf(\'"\') === 0) {
// This is a quoted cookie as according to RFC2068, unescape...
s = s.slice(1, -1).replace(/\\"/g, \'"\').replace(/\\\\/g, \'\\\');
}
try {
// Replace server-side written pluses with spaces.
// If we can\'t decode the cookie, ignore it, it\'s unusable.
s = decodeURIComponent(s.replace(pluses, \' \'));
} catch (e) {
return;
}
try {
// If we can\'t parse the cookie, ignore it, it\'s unusable.
return config.json ? JSON.parse(s) : s;
} catch (e) {}
}
function read(s, converter) {
var value = config.raw ? s : parseCookieValue(s);
return $.isFunction(converter) ? converter(value) : value;
}
var config = $.cookie = function(key, value, options) {
// Write
if (value !== undefined && !$.isFunction(value)) {
options = $.extend({}, config.defaults, options);
if (typeof options.expires === \'number\') {
var days = options.expires,
t = options.expires = new Date();
t.setDate(t.getDate() + days);
}
return (document.cookie = [
encode(key), \'=\', stringifyCookieValue(value),
options.expires ? \'; expires=\' + options.expires.toUTCString() : \'\', // use expires attribute, max-age is not supported by IE
options.path ? \'; path=\' + options.path : \'\',
options.domain ? \'; domain=\' + options.domain : \'\',
options.secure ? \'; secure\' : \'\'
].join(\'\'));
}
// Read
var result = key ? undefined : {};
// To prevent the for loop in the first place assign an empty array
// in case there are no cookies at all. Also prevents odd result when
// calling $.cookie().
var cookies = document.cookie ? document.cookie.split(\'; \') : [];
for (var i = 0, l = cookies.length; i < l; i++) {
var parts = cookies[i].split(\'=\');
var name = decode(parts.shift());
var cookie = parts.join(\'=\');
if (key && key === name) {
// If second argument (value) is a function it\'s a converter...
result = read(cookie, value);
break;
}
// Prevent storing a cookie that we couldn\'t decode.
if (!key && (cookie = read(cookie)) !== undefined) {
result[name] = cookie;
}
}
return result;
};
config.defaults = {};
$.removeCookie = function(key, options) {
if ($.cookie(key) !== undefined) {
// Must not alter options, thus extending a fresh object...
$.cookie(key, \'\', $.extend({}, options, {
expires: -1
}));
return true;
}
return false;
};
}));
另外,目前javascript使用非常多的json格式,如果希望存储在本地,可以直接调用JSON.stringify()将其转为字符串。读取出来后调用JSON.parse()将字符串转为json格式,如下所示:
var obj = {
"12345":{
"id":"45",
"name":"pp"
}
}
$.cookie("test",JSON.stringify(obj));
console.log(JSON.parse($.cookie("test")))