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');

JavaScript逆引きリファレンス一覧へ戻る