Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
24
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

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

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で十分そうです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
24
Help us understand the problem. What are the problem?