jknife
Version:
javaScript工具库
60 lines (58 loc) • 2.31 kB
JavaScript
/**
* @description docCookies
* @param {Array} data 数组
* @return {Array}
*
* @example
* docCookies.setItem(name, value[, end[, path[, domain[, secure]]]])
* docCookies.getItem(name) => [{name: 1}]
* docCookies.removeItem(name[, path],domain)
* docCookies.hasItem(name) => true
* docCookies.keys() => [{name: 1}]
*/
const docCookies = {
getItem: function (sKey) {
return decodeURIComponent(document.cookie.replace(new RegExp('(?:(?:^|.*;)\\s*' + encodeURIComponent(sKey).replace(/[-.+*]/g, '\\$&') + '\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1')) || null
},
setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) {
// eslint-disable-next-line no-useless-escape
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
},
removeItem: function (sKey, sPath, sDomain) {
if (!sKey || !this.hasItem(sKey)) {
return false
}
document.cookie = encodeURIComponent(sKey) + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT' + (sDomain ? '; domain=' + sDomain : '') + (sPath ? '; path=' + sPath : '')
return true
},
hasItem: function (sKey) {
return (new RegExp('(?:^|;\\s*)' + encodeURIComponent(sKey).replace(/[-.+*]/g, '\\$&') + '\\s*\\=')).test(document.cookie)
},
keys: /* optional method: you can safely remove it! */ function () {
// eslint-disable-next-line no-useless-backreference, no-useless-escape
const 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
}
}
export default docCookies