LoginSignup
29
24

More than 5 years have passed since last update.

JavaScriptによるcookieが有効か無効かの判定

Last updated at Posted at 2016-06-06

cookieが有効か無効かの判定の際に、IEとEdgeだけうまくいかなかったので対処法のメモになります。自分用ですが誰かの役に立てば幸いです。

IEおよびEdge以外

「cookie javasicrpt 無効 判定」などでググると"navigator.cookieEnabled"による判定の記事をよく目にします。しかしChrome、Firefox、Safariは判定できるのですが、IEとEdgeはcookieをブロックにしても"true"が返ってきてしまいました。


if(navigator.cookieEnabled){
  //cookie 有効
}else {
  //cookie 無効
}

DEMO1
※ cookieの設定を切り替えてお試しください、IEおよびEdgeでご覧ください。

対処方法


var setCookie = function(cookieName, value){
  var cookie = cookieName + "=" + value + ";";
  document.cookie = cookie;
}

var getCookie = function(cookieName){
  var l = cookieName.length + 1 ;
  var cookieAry = document.cookie.split("; ") ;
  var str = "" ;
  for(i=0; i < cookieAry.length; i++){
    if(cookieAry[i].substr(0, l) === cookieName + "="){
      str = cookieAry[i].substr(l, cookieAry[i].length) ;
      break ;
    }
  }
  return str;
}

setCookie('check_cookie', true);
var val = getCookie('check_cookie');

if(val) {
  //cookie 有効
} else {
  //cookie 無効
}

あらかじめcookieと値をセット。
値が返ってきたら有効、返ってこなければ無効と判別します。

DEMO2
※ edgeはcookieの設定を変更した後ブラウザの再起動が必要です。

対処方法(jQuery)


function setCookie(cookieName, value){
  $.cookie(cookieName, value);
}

function getCookie(cookieName){
  var c = $.cookie();
  var str = '';
  for(key in c){
    if(key === cookieName){
      str = c[key];
    }
  }
  return str;
}

jquery.cookie.jsを使い、setCookieとgetCookieをそれぞれ書き直してみました。
ソースも簡潔になり、特別な理由がない限りはjQueryで十分そうです。

29
24
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
24