Cookieの取得や設定をメソッド化し簡単にアクセス
次のようにメソッドを定義すると、取得や設定などが簡単に利用できるようになります。
JavaScript
var cookie = {
/**
* 取得
* @param {string} cookieName 取得するCookieの名前
*/
get : function(cookieName) {
if (!navigator.cookieEnabled) return false;
var getCookieAllData = document.cookie,
getCookieAllDatas = getCookieAllData.split(';'),
getCookieDatas = {},
cookieKeyValue = [],
cookieKey = '',
cookieValue = '';
var hashLength = function(arr) {
var result = 0, key = false;
if (typeof arr !== 'object') return false;
for (key in arr) result++;
return result;
};
for (var i = 0, len = getCookieAllDatas.length; i < len; i++) {
if (getCookieAllDatas[i] && getCookieAllDatas[i] !== '') {
cookieKeyValue = getCookieAllDatas[i].split('=');
cookieKey = cookieKeyValue[0].replace(/^\s+/, '');
cookieValue = '';
if (cookieKeyValue[1]) {
cookieValue = decodeURIComponent(cookieKeyValue[1]);
}
getCookieDatas[cookieKey] = cookieValue;
}
}
if (hashLength(getCookieDatas) > 0) {
if (cookieName && cookieName in getCookieDatas) {
return getCookieDatas[cookieName];
} else {
return getCookieDatas;
}
} else {
return '';
}
},
/**
* 設定
* @param {string} cookieName 設定するCookieの名前
* @param {string} value 設定する値
* @param {string} domain 有効ドメイン
* @param {string} path 有効パス
* @param {string} expires 有効期限
* @param {boolean} secure セキュアとするか
* @return {boolean} 設定に成功した場合はtrue、失敗した場合はfalseを返す
*/
set : function(cookieName, value, domain, path, expires, secure) {
if (!navigator.cookieEnabled || !cookieName || !value) return false;
var date;
var setCookieData = cookieName + '=' + encodeURIComponent(value) + ';';
if (domain) setCookieData += 'domain=' + domain + ';';
if (path) setCookieData += 'path=' + path + ';';
if (expires && expires.match(/^[0-9]+$/)) {
date = new Date(expires);
setCookieData += 'expires=' + date.toGMTString() + ';';
}
if (secure && secure === true && location.protocol.match(/https/)) {
setCookieData += 'secure';
}
document.cookie = setCookieData;
return true;
},
/**
* 削除
* @param {string} cookieName 削除するCookieの名前
* @return {boolean} 削除に成功した場合はtrue、失敗した場合はfalseを返す
*/
del : function(cookieName) {
if (!navigator.cookieEnabled || !cookieName) return false;
var getCookieDatas = this.get();
if (getCookieDatas[cookieName]) {
var setCookieData = cookieName + '=;',
date = new Date(0);
setCookieData += 'expires=' + date.toGMTString() + '';
document.cookie = setCookieData;
return true;
}
return false;
}
};
使用方法
取得
取得する場合は、cookie.getメソッドを使い、引数に取得したいcookie名(キー)を設定します。
Cookieが無効の場合はfalse、Cookie自信や対象のcookie名(キー)が見つからなかった場合は空白、見つかったらその値が返ってきます。
JavaScript
// cookie.get(取得したいcookie名)
var getCookieData = cookie.get('foo1');
設定
設定する場合は、cookie.setメソッドを使い、第一引数にcookie名(キー)、第二引数に値を設定します。
第三引数以降は任意の引数で、第三引数がドメイン、第四引数がディレクトリ、第五引数が有効期限(ミリ秒)、第六引数がセキュア(trueまたはfalse)が設定できます。
Cookieが無効の場合など失敗した場合はfalse、成功した場合はtrueを返します。
JavaScript
// cookie.set(cookie名, 値[, ドメイン, ディレクトリ, 有効期限])
var getCookieData = cookie.get('foo1');
削除
Cookieに保存されているあるcookie名(キー)を削除する場合は、cookie.delメソッドを使い、引数に削除したいcookie名(キー)を設定します。
Cookieが無効の場合やcookie名(キー)が見つからなかった場合はfalse、成功した場合はtrueを返します。
JavaScript
// cookie.del(削除したいcookie名)
var getCookieData = cookie.del('foo1');