トップページ > JavaScript > クラスライブラリ集 > cookie操作
 
cookie操作
ver.1.1
<機能と特徴>
cookie操作用クラス。

cookieの読み書きや削除の他、クッキーが有効な設定か調べることが出来ます。
   
インフォメーション


公開日 2005.1.18
最終更新日 2005.7.10
バージョン ver 1.1
動作確認
IE5.0 IE6.0 NN4.7 NN6.2 NN7.0
Opera7.5 FireFox1.0
取扱難易度 ★★☆☆☆難易度2
cookie 使用
CSS 不使用
更新履歴
2005.7.10 ver1.1 cookieクラスとして再編
 
リファレンス

 
ソース

<script language="JavaScript" type="text/javascript">
<!--
//copyright(C) 2005 あう http://www5c.biglobe.ne.jp/~horoau/
//ver1.1

function cookie()
{
 //cookie読み込みメソッド
 this.get = function (name)
 {name = escape(name);
  var cookies = document.cookie.split("; ");
  var cookie  = 0;
  for(var i in cookies)
  {if(cookies[i].indexOf(name+"=") == 0)
   {cookie = cookies[i].split("=");}}
  return unescape(cookie[1]);}

 //cookie書き込みメソッド
 this.set = function (name,data,time)
 {var times = time;
  if(time)
  {time =  (time+"").replace(/[^\d]/,"");
   for(var i=0;i==0;i++)
   {time *= 1000;
    if(String(times).indexOf("sec") != -1){break;}
    time *= 60;
    if(String(times).indexOf("min") != -1){break;}
    time *= 60;
    if(String(times).indexOf("hour") != -1){break;}
    time *= 24;}
   time = new Date(new Date().getTime()+time).toGMTString();}
  name = escape(name);
  data = escape(data);
  document.cookie = name+"="+data+";expires="+time+";";}

 //cookie削除
 this.clear = function (name)
 {time = new Date(new Date().getTime()-10000).toGMTString();
  name = escape(name);
  document.cookie = name+"=1;expires="+time+";"}

 //cookieテスト
 this.check = function ()
 {if(navigator.cookieEnabled != undefined)
  {return navigator.cookieEnabled;}
  do
  {var name = "test"+Math.random();}
  while(document.cookie.indexOf(name) != -1)
  document.cookie = name+"=test;"
  if(document.cookie.indexOf(name+"=test") != -1)
  {return true;}
  else
  {return false;}}}

//インスタンス生成
cookie = new cookie;

// -->
</script>

 
開発日誌

[ 2005.7.10 ] ver.1.1

メソッド名にいちいちcookieって出てくるのも 何となく煩わしいのでクラスにしちゃいました。 本来クラスライブラリなんだから この方が正しい姿ではあるんだろうけどね。 でも本来cookieはdocumentオブジェクトのプロパティだから 初心者向けにはいいかなって思ったんだけどね。

って考えてみたらこのクラスライブラリって 中級者以上推奨なんだよね。どうも矛盾がある昨今。
[ 2005.1.18 ] ver.1.0

cookieなんてそれほどややこしいものじゃないけど 初心者の頃はずいぶん苦労した記憶があるね。 慣れてしまえばこんなものだけどあの頃の苦労が懐かしい。

でもその当時は関係なかった問題もあるにはあるんだよね。 全角文字とか使う場合はエンコードするわけだけど escape()の形式ってブラウザによって違うし 最近のブラウザで言えばNetscapeがShift-JISで IEがunicode,OperaやFirefoxもIEに合わせたのか知らないけどunicode でもCGIはunicodeはあんまり一般的じゃないし。 (Perl5.8からunicode標準で扱えるらしいけど。もしくはJcode.pmとか使うか)

って話が脱線してるけど互換性を考えるといろいろ面倒ってこと。 JavaScriptで文字コード指定でエンコード、デコード出来るようにってのは unicodeとShift-JISとかの間で変換するのって巨大な変換表使うから あんまり現実的じゃないんだよね。 ってなんか難しい話になっちゃったけどこの話が理解できるレベルの人が cookie扱うのにこんなクラス使わないような・・・。



ウェブ木箱
copyright(C) 2005 あう