cookie.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /**
  2. * @desc cookie
  3. |*| * cookieApi.set(name, value[, end[, path[, domain[, secure]]]])
  4. |*| * cookieApi.get(name)
  5. |*| * cookieApi.remove(name[, path], domain)
  6. |*| * cookieApi.has(name)
  7. |*| * cookieApi.keys()
  8. */
  9. var cookieApi = {
  10. set: function set(sKey, sValue, vEnd, sPath, sDomain, bSecure) {
  11. // 过滤掉关键词key
  12. if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) return false;
  13. var sExpires = '';
  14. if (vEnd) {
  15. switch (vEnd.constructor) {
  16. case Number:
  17. sExpires = vEnd === Infinity ? '; expires=Fri, 31 Dec 9999 23:59:59 GMT' : '; max-age=' + vEnd;
  18. break;
  19. case String:
  20. sExpires = '; expires=' + vEnd;
  21. break;
  22. case Date:
  23. sExpires = '; expires=' + vEnd.toUTCString();
  24. break;
  25. }
  26. }
  27. document.cookie = encodeURIComponent(sKey) + '=' + encodeURIComponent(sValue) + sExpires + (sDomain ? '; domain=' + sDomain : '') + (sPath ? '; path=' + sPath : '') + (bSecure ? '; secure' : '');
  28. return true;
  29. },
  30. get: function get(sKey) {
  31. return decodeURIComponent(document.cookie.replace(new RegExp('(?:(?:^|.*;)\\s*' + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1')) || null;
  32. },
  33. has: function has(sKey) {
  34. return new RegExp('(?:^|;\\s*)' + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=').test(document.cookie);
  35. },
  36. remove: function remove(sKey, sPath, sDomain) {
  37. if (!sKey || !this.has(sKey)) return false;
  38. document.cookie = encodeURIComponent(sKey) + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT' + (sDomain ? '; domain=' + sDomain : '') + (sPath ? '; path=' + sPath : '');
  39. return true;
  40. },
  41. keys: function keys() {
  42. var aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, '').split(/\s*(?:\=[^;]*)?;\s*/);
  43. for (var nIdx = 0; nIdx < aKeys.length; nIdx++) {
  44. aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]);
  45. }
  46. return aKeys;
  47. }
  48. };
  49. module.exports = cookieApi;