JavaScriptはクッキー、パラメータ設定、読み取り、書き込み、削除関数を使用します.


クッキーを設定各クッキーは名前/値ペアであり、次のような文字列をdocumentに割り当てることができる.cookie:document.cookie="userId=828";複数の名前/値ペアを一度に格納する場合は、セミコロン(;)たとえば、document.cookie="userId=828; userName=hulk";クッキーの名前や値にセミコロン(;)、カンマ(,)、等号(=)、スペース.クッキーの名前では簡単ですが、保存する値は不確定です.これらの値を格納するにはどうすればいいですか?方法はescape()関数で符号化され、スペースが「20%」に符号化されるなど、いくつかの特殊な記号を16進数で表すことができ、cookie値に格納することができ、このスキームを使用すると中国語の文字化けを回避することができます.例:document.cookie="str="+escape("I love ajax");相当于:document.cookie="str=I%20love%20ajax";前述したように、escape()符号化を用いると、元のクッキー値を得るには、値を取り出した後にunescape()を用いて復号する必要がある.だがクッキーは属性のように見え、異なる値を与えることができます.しかし、一般的な属性とは異なり、その付与値を変更することは、元の値を失うことを意味するものではありません.例えば、次の2つの文を連続的に実行します.document.cookie="userId=828";document.cookie="userName=hulk";このとき、ブラウザは2つのクッキーを維持し、それぞれuserIdとuserNameであるためdocumentに与える.クッキーの付与値は、documentのような文を実行するのと似ています.addcookie("userId=828");document.addcookie("userName=hulk");実際、ブラウザは、クッキーの値を変更するには、documentなどの値を再割り当てするだけで、クッキーを設定する.cookie="userId=929";これによりuserIdというクッキー値が929に設定される.
クッキーの値を取得するには、クッキーの値を取得する方法について説明します.クッキーの値はdocument.cookie直接取得:var strcookie=document.cookie;これにより、ドメイン名の下のすべてのクッキーを含む複数の名前/値ペアからなる文字列がセミコロンで区切られます.例:
<script language="JavaScript" type="text/JavaScript">
<!--
document.cookie="userId=828";
document.cookie="userName=hulk";
var strcookie=document.cookie;
alert(strcookie);
//-->
</script>

 
【図7.1】出力のクッキー値を示す図である.このように、すべてのクッキー値を一度に取得することができ、クッキー名を指定して指定した値を取得することはできません.これはクッキー値を処理するのに最も面倒な部分です.ユーザーは、指定したクッキー値を取得するために、この文字列を自分で分析する必要があります.たとえば、userIdの値を取得するには、次のようにします.
<script language="JavaScript" type="text/JavaScript">
<!--
//    cookie
document.cookie="userId=828";
document.cookie="userName=hulk";
//  cookie   
var strcookie=document.cookie;
//  cookie      /  
var arrcookie=strcookie.split("; ");
var userId;
//  cookie  ,    cookie 
for(var i=0;i<arrcookie.length;i++){
      var arr=arrcookie[i].split("=");
      //     userId cookie,      
      if("userId"==arr[0]){
             userId=arr[1];
             break;
      }
}
alert(userId);
//-->
</script>

 
 
これで単一クッキーの値が得られます
同様の方法で、1つ以上のクッキーの値を取得することができ、その主なテクニックは文字列と配列の関連操作である.
クッキーに終了日を設定するまで、すべてのクッキーは単一セッションクッキーです.つまり、ブラウザが閉じた後、これらのクッキーは失われます.実際には、これらのクッキーはメモリに格納されているだけで、対応するハードディスクファイルは作成されていません.実際の開発では、クッキーは、ユーザログインの状態を保存するなど、長期的な保存を必要とすることが多い.これは次のオプションで実現できます:document.cookie="userId=828; expires=GMT_String";そのうちGMT_StringはGMT形式で表される時間文字列で、この文はuserIdというクッキーをGMT_に設定することです.Stringが示す期限切れは、この時間を超えるとクッキーが消え、アクセスできません.たとえば、クッキーを10日後に期限切れに設定する場合は、次のようにします.
<script language="JavaScript" type="text/JavaScript">
<!--
//      
var date=new Date();
var expireDays=10;
// date   10      
date.setTime(date.getTime()+expireDays*24*3600*1000);
// userId userName  cookie   10    
document.cookie="userId=828; userName=hulk; expire="+date.toGMTString();
//-->
</script>

 
 
 
クッキーを削除クッキーを削除するには、その有効期限を過去の時間に設定します.たとえば、次のようにします.
<script language="JavaScript" type="text/JavaScript">
<!--
//      
var date=new Date();
// date        
date.setTime(date.getTime()-10000);
// userId  cookie  
document.cookie="userId=828; expire="+date.toGMTString();
//-->
</script>

 
 
 
アクセス可能なクッキーのパスを指定するデフォルトでは、あるページにクッキーが作成されている場合、そのページが存在するディレクトリの他のページもアクセスできます.このディレクトリの下にサブディレクトリがある場合は、サブディレクトリにもアクセスできます.例えばwww.xxxx.com/html/a.htmlで作成するクッキーは、www.xxxx.com/html/b.htmlまたはwww.xxx.com/html/some/c.htmlにアクセスするが、www.xxxx.com/d.htmlアクセス.クッキーがアクセスできるディレクトリを制御するにはpathパラメータを使用してクッキーを設定する必要があります.構文は以下の通りです.document.cookie="name=value; path=cookieDir";ここで、cookieDirは、cookieにアクセス可能なディレクトリを表す.例:document.cookie="userId=320; path=/shop";現在のクッキーはshopディレクトリでしか使用できないことを示します.クッキーをWebサイト全体で利用できるようにするには、クッキーをdirはルートディレクトリとして指定する、例えばdocument.cookie="userId=320; path=/";
アクセス可能なクッキーを指定するホスト名とパスは類似しており、ホスト名は同じドメインの下の異なるホスト、例えばwww.google.comとgmail.google.comは2つの異なるホスト名です.デフォルトでは、1つのホストで作成するクッキーは、別のホストではアクセスできませんが、domainパラメータで制御できます.構文形式はdocumentです.cookie="name=value; domain=cookieDomain";Googleを例にとると、ホスト間アクセスを実現するには、documentと書くことができます.cookie="name=value;domain=.google.com";これで、すべてのgoogle.comの下のホストはこのクッキーにアクセスできます.
総合例:汎用的なクッキー処理関数クッキーを構築する処理過程は比較的複雑であり、一定の類似性を有する.したがって、cookieの汎用的な動作を完了するためにいくつかの関数を定義し、コードの多重化を実現することができる.次に、一般的なクッキー操作とその関数実装を示します.1.cookie:addcookie(name,value,expireHours)を追加します.この関数は、cookie名、cookie値、および何時間後に期限切れになるかの3つのパラメータを受信します.ここではexpireHoursが0の場合に期限を設定しないことを約束し,すなわちブラウザが閉じるとクッキーが自動的に消える.この関数は次のように実装されます.
<script language="JavaScript" type="text/JavaScript">
<!--
function addcookie(name,value,expireHours){
      var cookieString=name+"="+escape(value);
      //          
      if(expireHours>0){
             var date=new Date();
             date.setTime(date.getTime+expireHours*3600*1000);
             cookieString=cookieString+"; expire="+date.toGMTString();
      }
      document.cookie=cookieString;
}
//-->
</script>

 
2.指定した名前のクッキー値を取得する:getcookie(name)この関数は、名前がnameのクッキー値を返し、存在しない場合は空を返します.
<script language="JavaScript" type="text/JavaScript">
<!--
function getcookie(name){
      var strcookie=document.cookie;
      var arrcookie=strcookie.split("; ");
      for(var i=0;i<arrcookie.length;i++){
            var arr=arrcookie[i].split("=");
            if(arr[0]==name)return arr[1];
      }
      return "";
}
//-->
</script>

 
3.指定した名前のcookieを削除する:deletecookie(name)この関数は、指定した名前のcookieを削除することができ、以下のように実現する.
<script language="JavaScript" type="text/JavaScript">
<!--
function deletecookie(name){
       var date=new Date();
       date.setTime(date.getTime()-10000);
       document.cookie=name+"=v; expire="+date.toGMTString();
}
//-->
</script>

 
 
 
別のネット上で伝えることもできます:
<script language="JavaScript" type="text/JavaScript">

// cookies     :   
function SetCookie(name,value)//    ,   cookie   ,    
{
    var Days = 30; //  cookie      30  
    var exp = new Date();    //new Date("December 31, 9998");
    exp.setTime(exp.getTime() + Days*24*60*60*1000);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
function getCookie(name)// cookies          
{
    var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
     if(arr != null) return unescape(arr[2]); return null;

}
function delCookie(name)//  cookie
{
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval=getCookie(name);
    if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}

SetCookie ("xiaoqi", "3")
alert(getCookie('xiaoqi'));
</script>