deamon
deamon

Reputation: 92387

How to test whether a browser accepts cookies with JavaScript?

I want to test with JavaScript whether the browser supports cookies or not. The following code works with Internet Explorer 8 and Firefox 3.6 but not with Google Chrome 5.

function areCookiesEnabled() {
  document.cookie = "__verify=1";
  var supportsCookies = document.cookie.length > 1 &&
                        document.cookie.indexOf("__verify=1") > -1;
  var thePast = new Date(1976, 8, 16);
  document.cookie = "__verify=1;expires=" + thePast.toUTCString();
  return supportsCookies;
}

if(!areCookiesEnabled()) 
    document.write("<p>Activate cookies!</p>");
else
    document.write("<p>cookies ok</p>");

Chrome displays the message "Activate cookies!" regardless of my cookie settings. But if I disallow cookies, Chrome tells me that a cookie could not be set.

Any idea how to test cookie availability with JavaScript in Chrome?

Upvotes: 3

Views: 5211

Answers (2)

Tom Gullen
Tom Gullen

Reputation: 61737

I'm not sure why the code doesn't work, but you really can simplify your code which will help pin down the problem:

function areCookiesEnabled() {
  document.cookie = "__verify=1;expires=" + new Date(1976, 8, 16).toUTCString();
  return  (document.cookie.length > 1);
}

if(!areCookiesEnabled()) 
    document.write("<p>Activate cookies!</p>");
else
    document.write("<p>cookies ok</p>");

Also, here is an excellent overview of Javascript cookies, it might help you pin it down.

Upvotes: 2

Josh Stodola
Josh Stodola

Reputation: 82483

The only reliable way to tell if cookies are enabled is to set one, and check for its existence on the next request. Server-side code required.

Upvotes: 2

Related Questions