cookie.js 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. var Cookie = {
  2. cookieAPI:{
  3. get: function(name){
  4. var nameEQ = name + "=";
  5. var ca = document.cookie.split(';');//把cookie分割成组
  6. for(var i=0;i < ca.length;i++) {
  7. var c = ca[i];//取得字符串
  8. while (c.charAt(0)==' ') {//判断一下字符串有没有前导空格
  9. c = c.substring(1,c.length);//有的话,从第二位开始取
  10. }
  11. if (c.indexOf(nameEQ) == 0) {//如果含有我们要的name
  12. return unescape(c.substring(nameEQ.length,c.length));//解码并截取我们要值
  13. }
  14. }
  15. return false;
  16. },
  17. set: function(name, value, options){
  18. if (Cookie.isPlainObject(name)) {
  19. for (var k in name) {
  20. if (name.hasOwnProperty(k)) this.set(k, name[k], value);
  21. }
  22. }else{
  23. var opt = Cookie.isPlainObject(options) ? options : { expires: options },
  24. expires = opt.expires !== undefined ? opt.expires : '',
  25. expiresType = typeof(expires),
  26. path = opt.path !== undefined ? ';path=' + opt.path : ';path=/',
  27. domain = opt.domain ? ';domain=' + opt.domain : '',
  28. secure = opt.secure ? ';secure' : '';
  29. //过期时间
  30. if (expiresType === 'string' && expires !== '') expires = new Date(expires);
  31. else if (expiresType === 'number') expires = new Date(+new Date + 1000 * 60 * 60 * 24 * expires);
  32. if (expires !== '' && 'toGMTString' in expires) expires = ';expires=' + expires.toGMTString();
  33. document.cookie = name+"="+escape(value)+expires+path+domain+secure; //转码并赋值
  34. }
  35. },
  36. remove: function(names){
  37. names = Cookie.isArray(names) ? names : Cookie.toArray(arguments);
  38. for (var i = 0, l = names.length; i < l; i++) {
  39. this.set(names[i], '', -1);
  40. }
  41. return names;
  42. },
  43. clear: function(name){
  44. return this.remove(Cookie.getKeys(this.all()));
  45. },
  46. all:function () {
  47. if (document.cookie === '') return {};
  48. var cookies = document.cookie.split('; '),result = {};
  49. for (var i = 0, l = cookies.length; i < l; i++) {
  50. var item = cookies[i].split('=');
  51. result[unescape(item[0])] = unescape(item[1]);
  52. }
  53. return result;
  54. }
  55. },
  56. getKeys: Object.names || function (obj) {
  57. var names = [],name = '';
  58. for (name in obj) {
  59. if (obj.hasOwnProperty(name)) names.push(name);
  60. }
  61. return names;
  62. },
  63. isPlainObject:function (value) {
  64. return !!value && Object.prototype.toString.call(value) === '[object Object]';
  65. },
  66. isArray:function (value) { return value instanceof Array },
  67. toArray:function (value) {
  68. return Array.prototype.slice.call(value);
  69. }
  70. }
  71. cookie=function (name, value, options){
  72. var argm = arguments,
  73. _cookie=function(){
  74. if (argm.length === 0) return cookie.clear();
  75. if (Cookie.isPlainObject(name) || (argm.length>1&&name&&value))
  76. return cookie.set(name, value, options);
  77. if (value === null) return cookie.remove(name);
  78. if (argm.length === 1) return cookie.get(name);
  79. return cookie.all();
  80. }
  81. return _cookie()
  82. }
  83. for (var a in Cookie.cookieAPI) cookie[a]=Cookie.cookieAPI[a];