JS Tutorial
JS Version
JS Objects
JS Function
JS Classes
JS Async
JS HTML DOM
JS Browser BOM
JS Web API
JS AJAX
JS JSON
JS vs JQUERY
JS Graphics
JS Cookies
What are Cookies?
Cookies are data that are stored in small text files, on your computer.
When a web server sends a web page to a browser, the connection is shut down, and the server forgets everything about the user.
Cookies were invented to solve the problem of “how to remember information about the user”:
When a user visits a web page, his/her name can be stored in a cookie.
The next time the user visits the page, the cookie “remembers” his/her name.
Cookies are saved in name-value pairs like:
username = John Doe
Create a Cookie with JavaScript
JavaScript can create, read, and delete cookies with the document.cookie property.
With JavaScript, a cookie can be created like this:
document.cookie = “username=John Doe”;
Read a Cookie with JavaScript
With JavaScript, cookies can be read like this:
let x = document.cookie;
document.cookie will return all cookies in one string much like: cookie1=value; cookie2=value; cookie3=value;
Change a Cookie with JavaScript
With JavaScript, change a cookie the same way as you create it:
document.cookie = “username=John Smith; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/”;
The old cookie is overwritten.
Delete a Cookie with JavaScript
Deleting a cookie is easy.
You don’t need to specify a cookie value when you delete a cookie.
Set the expires parameter to a past date:
document.cookie = “username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;”;
You should define the cookie path to ensure that you delete the right cookie.
Some browsers will not let you delete a cookie if you don’t specify the path.
The Cookie String
The document.cookie property is similar to a normal text string. But it is not.
Even if you write a whole cookie string to document.cookie, and when it is read it again, you can only see the name-value pair of it.
If you set a new cookie, older cookies are not overwritten. The new cookie is added to document.cookie, so if you read document.cookie again you will get something like:
cookie1 = value; cookie2 = value;
document.cookie = “username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC”;
With a path parameter, it indicates the browser what path the cookie belongs to. By default, the cookie belongs to the current page.
document.cookie = “username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/”;
JavaScript Cookie Example
In the example to follow, we will create a cookie that stores the name of a visitor.
The next time the visitor arrives at the same page, he/she will get a welcome message.
For the example we will create 3 JavaScript functions:
A function to set a cookie value
A function to get a cookie value
A function to check a cookie value
A Function to Set a Cookie
Create a function that stores the name of the visitor in a cookie variable
Example
function setCookie(cname, cvalue, exdays) {
const d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
let expires = “expires=”+ d.toUTCString();
document.cookie = cname + “=” + cvalue + “;” + expires + “;path=/”;
}
Example explained
The parameters of the function above are the name of the cookie (cname), the value of the cookie (cvalue), and the number of days until the cookie should expire (exdays).
The function sets a cookie by adding together the cookiename, the cookie value, and the expired string.
A Function to Get a Cookie
The appName property is used return the application name of the browser.
Example
function getCookie(cname) {
let name = cname + “=”;
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(‘;’);
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ‘ ‘) {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return “”;
}
Function explained:
The cookiename is used as parameter (cname).
Create a variable (name) with the text to search for (cname + “=”).
Deode the cookie string, to handle cookies with special characters, e.g. ‘$’
Split document.cookie on semicolons into an array called ca (ca = decodedCookie.split(‘;’)).
Loop through the ca array (i = 0; i < ca.length; i++), and read out each value c = ca[i]).
If the cookie is found (c.indexOf(name) == 0), return the value of the cookie (c.substring(name.length, c.length).
If the cookie is not found, return “”.
A Function to Check a Cookie
Let’s create the function that checks if a cookie is set.
If the cookie is set it displays a greeting.
If the cookie is not set, it will display a prompt box, asking for the name of the user, and stores the username cookie for 365 days, by calling the setCookie function.
Example
<!DOCTYPE html>
<html>
<head>
<script>
function setCookie(cname,cvalue,exdays) {
const d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
let expires = “expires=” + d.toUTCString();
document.cookie = cname + “=” + cvalue + “;” + expires + “;path=/”;
}
function getCookie(cname) {
let name = cname + “=”;
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(‘;’);
for(let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ‘ ‘) {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return “”;
}
function checkCookie() {
let user = getCookie(“username”);
if (user != “”) {
alert(“Welcome again ” + user);
} else {
user = prompt(“Please enter your name:”,””);
if (user != “” && user != null) {
setCookie(“username”, user, 30);
}
}
}
</script>
</head>
<body onload=”checkCookie()”></body>
</html>