cookieEnabled
navigator.cookieEnabledはデバイスでCookieが利用可能かどうかを判定できるプロパティです。
このプロパティを利用してCookieが利用可能な場合と利用不可な場合で処理を切り分けることが可能です。
if(navigator.cookieEnabled){
//Cookieを利用する際の処理
}else{
alert("Cookieを有効にして下さい");
}
なお、Cookieはdocument.cookieで制御可能です。
IEでの問題
IEではセキュリティ設定を高に設定するとnavigator.cookieEnabledがtrueを返すにも関わらずcookieが利用できなくなる状態がありcookieが利用可能かの判断にnavigator.cookieEnabledを利用するのは正確ではありません。
正確に判定したい場合は以下の様な処理を行うことでcookieが利用可能か調べることができます。
//cookieが利用できるか確認
function cookieEnabled(){
var cookie_check = "isCookie",
tmpCookieVal = getCookie(cookie_check),
cookieEnabled;
setCookie(cookie_check,true);
cookieEnabled = getCookie(cookie_check)?true:false;
if(tmpCookieVal){
setCookie(cookie_check,tmpCookieVal);
}else{
deleteCookie(cookie_check);
}
return cookieEnabled;
}
//cookieを取得
function getCookie(key){
var cookie,cookies = document.cookie.split("; ");
for(var i = 0;i<cookies.length;i++){
cookie = cookies[i].split("=");
if(cookie[0]===key){
return decodeURIComponent(cookie[0]);
}
}
}
//cookieを設定
function setCookie(key,value,param){
var cookie = key+"="+encodeURIComponent(value);
for(var param_key in param){
cookie += "; "+param_key+"="+param[param_key];
}
document.cookie = cookie;
}
//cookieを削除
function deleteCookie(key){
var t = new Date();
t.setDate(t.getDate() - 1);
setCookie(key,'',{"expires":t.toUTCString()});
}
登録日 : 2012年10月23日 最終更新日 : 2015年9月16日