[JavaScript + Cookie]実は有効期限指定がすごく簡単だった件について

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[JavaScript + Cookie]実は有効期限指定がすごく簡単だった件について

Cookieの有効期限を指定するときって、NetscapeのCookie仕様に従うと、

document.cookie = 'name=value; expires=Thu, 1-Jan-2030 00:00:00 GMT';

のような書式で書かなければいけない。

strftimeのような関数がないJavaScriptでは面倒くさいなーと思って、今まで有効期限を指定するのはあきらめていたのだが、実はDate#toUTCString()の書式を読み込んでくれるみたいだ。

document.cookie = 'name=value; expires=' + new Date(2030, 1).toUTCString();

とりあえず、手元にあるIE6, Firefox2, Opera9で確認済み。Date#toUTCStringで有効期限が指定できるなら楽だ。

これを使って、Cookie書き込み関数を書いてみた。

var Cookie = {
    get: function(name) {
        var match = ('; ' + document.cookie + ';').match('; ' + name + '=(.*?);');
        return match ? decodeURIComponent(match[1]) : '';
    },
    set: function(name, value, expires, domain, path, secure) {
        var buffer = name + '=' + encodeURIComponent(value);
        if (typeof expires != 'undefined') buffer += '; expires=' + new Date(expires).toUTCString();
        if (typeof domain != 'undefined') buffer += '; domain=' + domain;
        if (typeof path != 'undefined') buffer += '; path=' + path;
        if (secure) buffer += '; secure';
        document.cookie = buffer;
    }
};

手軽に使えそうな感じ。使い方の例は↓。有効期限にDateオブジェクトを渡す以外はPHPのsetcookie関数とほぼ同じ。

var exp = new Date();
exp.setMonth(exp.getMonth() + 2);

Cookie.set('cookieName', 'cookieValue', exp, undefined, '/example/');
スポンサーサイト

関連記事

トラックバック URL

http://liosk.blog103.fc2.com/tb.php/22-47de347e

トラックバック

[JavaScript + Cookie] 空文字を使うときのブラウザ間差異
最近JavaScript + Cookieの検索ワードでこのブログにアクセスしてくれる人が多いので、JavaScript + Cookieについてもう少し勉強しなおしてみようと思った...
  • 2008-01-30
  • 発信元: 文系大学的IT系の悲哀

コメント

コメントの投稿

お名前
コメント
編集キー
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。