- 履歴一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- JavaScript/クッキーを扱うための簡単なツール へ行く。
- 1 (2013-03-29 (金) 03:12:18)
- 2 (2013-04-01 (月) 11:28:10)
- 3 (2013-04-03 (水) 10:16:22)
関連†
- JavaScript/Cookie
- jQuery
概要†
JavaScriptでクッキーを扱うための簡単なツールです。 Javaライクなインタフェースにしてみました。
こんなものは探せばもっといいものがありそうだけど、せっかく作ってみたので公開します。
JavaScriptコード†
var myUtil = {};
// ------------------------------ [ Utility: 空判定 ] ------------------------------
myUtil.empty = function(o) {
return (! o || o.length == 0);
};
// ------------------------------ [ Utility: トリム ] ------------------------------
myUtil.trim = function(o) {
return o.replace(/(^\s+)|(\s+$)/g, '');
};
var myTool = {};
// ------------------------------ [ Tool: クッキー ] ------------------------------
myTool.cookie = {};
/**
* クッキーのエンティティ.
*/
myTool.cookie.Cookie = function(name, value) {
if (! name) {
name = null;
}
if (! value) {
value = null;
}
var self = this;
self.name = name;
self.value = value;
self.expires = null;
self.domain = null;
self.path = null;
self.secure = true;
self.generateRawFormatString = function() {
var raw =
encodeURI(self.name) + "=" + encodeURI(self.value) + ";" +
((self.expires)? " expires=" + self.expires + ";": "") +
((self.domain)? " domain=" + self.domain + ";": "") +
((self.path)? " path=" + self.path + ";": "") +
((self.secure)? " secure": "");
return raw;
};
};
/**
* クッキーを取得します.
* <p>取得できるクッキーが存在しない場合nullを返却します。</p>
* @return クッキーのエンティティ配列
*/
myTool.cookie.getCookies = function() {
var cookie = document.cookie;
if (myUtil.empty(cookie)) {
return null;
}
var cookies = [];
jQuery.each(cookie.split(';'), function() {
var keyValue = myUtil.trim(this).split('=');
var key = decodeURI(keyValue[0]);
var value = decodeURI(keyValue[1]);
if (! myUtil.empty(key)) {
cookies.push(new myTool.cookie.Cookie(key, value));
}
});
return (cookies.length > 0)? cookies: null;
};
/**
* 名前を指定してクッキーを取得します.
* @param name クッキーの名前
* @return 指定の名前に該当するクッキーのエンティティ
*/
myTool.cookie.getCookie = function(name) {
if (! name) {
return null;
}
var ret = null;
var cookies = myTool.cookie.getCookies();
if (cookies) {
jQuery.each(cookies, function() {
if (name == this.name) {
ret = this;
}
});
}
return ret;
};
/**
* クッキーを保存します.
* @param cookie 保存するクッキーのエンティティ
*/
myTool.cookie.addCookie = function(cookie) {
document.cookie = cookie.generateRawFormatString();
};
使い方†
// ログインIDをクッキーから復元する
jQuery('#login-id').val(function() {
var cookie = myTool.cookie.getCookie('login-id');
return (cookie)? cookie.value: '';
});
// submit前にログインIDをクッキーに保存する
jQuery('#login-form-button').click(function() {
var cookie = new myTool.cookie.Cookie('login-id', jQuery('#login-id').val());
myTool.cookie.addCookie(cookie);
jQuery('#login-form').submit();
});