Skip to content

Instantly share code, notes, and snippets.

@junaidkbr
Last active November 19, 2019 05:58
Show Gist options
  • Save junaidkbr/08ff4e13fb399ad3cf7593c6c1709b58 to your computer and use it in GitHub Desktop.
Save junaidkbr/08ff4e13fb399ad3cf7593c6c1709b58 to your computer and use it in GitHub Desktop.
Handling cookies with Javascript
/**
* Creates or Updates a cookie
*/
function setCookie(name, value, expiry /* in days */ ) {
var d = new Date()
d.setTime(d.getTime() + (expiry * 24 * 60 * 60 * 1000))
var expires = 'expires=' + d.toUTCString()
document.cookie = name + '=' + value + ';' + expires + ';path=/'
}
/**
* Returns a cookie
*/
function getCookie(name) {
name = name + '='
var decodedCookie = decodeURIComponent(document.cookie)
var cookies = decodedCookie.split(';')
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i]
while (cookie.charAt(0) == ' ') {
cookie = cookie.substring(1)
}
if (cookie.indexOf(name) == 0) {
return cookie.substring(name.length, cookie.length)
}
}
return null
}
/**
* Returns all cookies
*/
function getCookies() {
var allCookies = []
var decodedCookie = decodeURIComponent(document.cookie)
var cookies = decodedCookie.split(';')
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i]
while (cookie.charAt(0) == ' ') {
cookie = cookie.substring(1)
}
if (cookie.length) {
cookie = cookie.split('=')
allCookies.push({
name: cookie[0],
value: cookie[1]
})
}
}
return allCookies.length ? allCookies : null
}
/* Usage */
var cookieName = 'jscookie'
// Create a cookie
setCookie(cookieName, 'JS Cookies!!!', 1)
// Get cookie value
var cookieValue = getCookie(cookieName)
// Get all cookies
var allCookies = getCookies()
// Check if a cookie exists
if (getCookie(cookieName) !== null) {
console.log(cookieName + ' exists.')
}
// Check if a cookie does not exist
if (getCookie(cookieName) === null) {
console.log(cookieName + ' does not exist.')
}
// Unset a cookie
setCookie(cookieName, 1, -1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment