JavascriptでCookieを2
前回に続いて、Cookieを簡単に扱えるようにしてみる。
/** * Cookieの情報を読み書きする。 */ var Cookie = { /** * Cookieの値を参照する。 * @param name string 参照したい情報のNAME。 * @return 当該の値。 */ get: function( name ) { var match = ('; ' + document.cookie + ';').match('; ' + name + '=(.*?);'); var value = match ? decodeURIComponent(match[1]) : null; return value; }, /** * Cookieに値を記録する。 * @param name string 参照名。 * @param value string 値。 * @param option hash expires(賞味期限:datetime), domain(有効ドメイン:string), path(有効パス:string), secure(セキュア状態でないと参照できないか否か:bool) の各情報。 * @return 成功時: 記録したクッキー文字列。 失敗時: false。 */ set: function(name, value, option) { if( typeof name != 'undefined' && name != '' && typeof value != 'undefined' && value != '' ) { var buffer = name + '=' + encodeURIComponent(value); if ( typeof(option) !== 'undefined' ) { if (typeof option.expires != 'undefined' && option.expires != '' ) buffer += '; expires=' + new Date(option.expires).toUTCString(); if (typeof option.domain != 'undefined' && option.domain != '' ) buffer += '; domain=' + option.domain; if (typeof option.path != 'undefined' && option.path != '' ) buffer += '; path=' + option.path; if (typeof option.secure == 'boolean' && option.secure ) buffer += '; secure'; } buffer += ";"; document.cookie = buffer; return buffer; } else { return false; } }, /** * Cookieの値を削除する。 * @param name string 削除する値の参照名。 * @return nullだったら無事削除できてる。 */ remove: function(name) { //1970年1月1日00:00:00の日付データをセットする var expires = new Date(); expires.setTime(0); //有効期限を過去にして書き込む document.cookie = name +"=;expires="+ expires.toGMTString(); } };
このあたり
//1970年1月1日00:00:00の日付データをセットする var expires = new Date(); expires.setTime(0);
がちょっとどうなのってかんじだけど、わざわざ内部時計を1970年より前にしてるような巧妙な人はいないだろうからまあいいか。
必要にかられたら
var foo = Cookie.get("name"); console.log( foo ); // -> "hoge" var options = ["expires","secure"]; var bar = Cookie.get("name", options ); console.log( bar.value ); // -> "hoge" console.log( bar.expires ); // -> Date {Fri Jul 13 2012 11:40:07 GMT+0900} console.log( bar.secure ); // -> true
みたいな使い方ができるように・・・・しないなあ、もっとちゃんとしたコード公開されてるから、それに乗り換えよう。