JS Cookies

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>