- 履歴一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- 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 = ((self.name)? encodeURI(self.name): '') + "=" + ((self.value)? 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 = (keyValue[0])? decodeURI(keyValue[0]): null; var value = (keyValue[1])? decodeURI(keyValue[1]): null; 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(); });