123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- /**
- * @desc cookie
- |*| * cookieApi.set(name, value[, end[, path[, domain[, secure]]]])
- |*| * cookieApi.get(name)
- |*| * cookieApi.remove(name[, path], domain)
- |*| * cookieApi.has(name)
- |*| * cookieApi.keys()
- */
- const cookieApi = {
- set: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) {
- // 过滤掉关键词key
- if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) return false
- let sExpires = ''
- if (vEnd) {
- switch (vEnd.constructor) {
- case Number:
- sExpires = vEnd === Infinity ? '; expires=Fri, 31 Dec 9999 23:59:59 GMT' : '; max-age=' + vEnd
- break
- case String:
- sExpires = '; expires=' + vEnd
- break
- case Date:
- sExpires = '; expires=' + vEnd.toUTCString()
- break
- }
- }
- document.cookie = encodeURIComponent(sKey) + '=' + encodeURIComponent(sValue) + sExpires + (sDomain ? '; domain=' + sDomain : '') + (sPath ? '; path=' + sPath : '') + (bSecure ? '; secure' : '')
- return true
- },
- get: function (sKey) {
- return decodeURIComponent(document.cookie.replace(new RegExp('(?:(?:^|.*;)\\s*' + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1')) || null
- },
- has: function (sKey) {
- return (new RegExp('(?:^|;\\s*)' + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=')).test(document.cookie)
- },
- remove: function (sKey, sPath, sDomain) {
- if (!sKey || !this.has(sKey)) return false
- document.cookie = encodeURIComponent(sKey) + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT' + ( sDomain ? '; domain=' + sDomain : '') + ( sPath ? '; path=' + sPath : '')
- return true
- },
- keys: function () {
- let aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, '').split(/\s*(?:\=[^;]*)?;\s*/)
- for (let nIdx = 0; nIdx < aKeys.length; nIdx++) {
- aKeys[nIdx] = decodeURIComponent(aKeys[nIdx])
- }
- return aKeys
- }
- }
- module.exports = cookieApi
|