JavaScript入門教程Cookies

3820 ワード

一部のWebサイトでは、あなたのハードディスク上に小さなテキストファイルでいくつかの情報を格納しています.これらのファイルはCookieと呼ばれています.MSIEヘルプ.一般的には、CookiesはCGIまたは類似しており、HTMLよりも高級なファイル、プログラムなどが作成されていますが、JavaScriptはCookiesに対する全面的なアクセス権を提供しています.
続ける前に、まずCookieの基本的な知識を勉強します.
各Cookieはこうです.
の制限はJavaScriptのネーミング制限と大同小異で、「JavaScriptキーワードを使ってはいけません」が少なくなりました.後者は分かりにくいですが、アルファベットと数字だけで命名すれば大丈夫です.の要求も「URLでコード化できる文字しか使えない」ということです.
各Cookieには失効日があります.コンピュータの時計が失効日を過ぎると、このCookieは削除されます.直接にCookieを削除することはできませんが、設定失効日が今の時刻より早い方法で間接的に削除することができます.
各ウェブサイト、または各サイトには、自分のCookiesがあります.これらのCookiesはこのサイトの下のウェブページからしかアクセスできません.他のサイトや同じサイトの下に許可されていないエリアからのウェブページは、アクセスできません.各「グループ」Cookiesには規定の大きさがあります.一番大きいサイズを超えると、一番早く失効したCookieは先に削除されて、新しいCookie「安家」になります.
今はdocument.co okieの属性を使うことを学びます.
document.co okie属性を直接使用する場合、または変数の割り当てなどの何らかの方法で、document.co okieの値を取得すると、現在のドキュメントにはCookiesがいくつあり、各Cookiesの名前とその値が分かります.例えば、あるドキュメントに「document.write」を追加した結果、
 
  
name=kevin; [email protected]; lastvisited=index.html
これは、文書には3つのCookies:name、emailとlastvisitedが含まれており、それぞれの値はkevinであり、[email protected]とindex.二つのCookiesの間はセミコロンとスペースで区切られているので、cookie String.split(';')の方法で各Cookieの別々の配列を得ることができます.
Cookieを設定する方法は、document.co okieに対する値付けです.他の場合の割当値と違って、Dcument.co okieへの割当値は元のCookiesを削除することはなく、Cookiesを追加するか、元のCookieを変更するだけです.値の書式:
 
  
document.cookie = 'cookieName=' + escape('cookieValue')
+ ';expires=' + expirationDateObj.toGMTString();
目眩がしますか?以上は太字ではないところはそのまま写して間違いないので、太字は実際の状況によって変えます.cookie NameはCookieの名前を表し、cookie ValueはCookieの値を表し、expirationDateObjは失効日が格納されている日付オブジェクト名を表しています.失効日を指定する必要がない場合は、2行目は不要です.失効日を指定しないと、ブラウザのデフォルトはブラウザを閉じた後(つまりすべてのウィンドウを閉じた後)に失効します.
上の下線が見えましたか?これらは注意すべき点です.
まずescape()の方法:どうして必ず使いますか?Cookieの値の要求は「URLで符号化できる文字しか使えない」からです.「escape()」の方法は文字列をURLで符号化する方法であることを知っています.Cookieに出力される値を「escape()」の方法で処理し、Cookieから受信した値を「unescape()」で処理するだけで万全です.そしてこの2つの方法の最も一般的な用途はCookiesを処理することです.Cookieは「document.co okie=cookie Name=cookie Value」というシンプルな設定ですが、cookie ValueのURLに出てはいけない文字が出ないように、やはりescapeを使ったほうがいいです.
そして「expires」の前のセミコロン:気をつければいいです.他ではなくセミコロンです.
最後のtoGMT String()の方法:Cookieの時効日を設定するのは全部GMT形式の時間で、その他のフォーマットの時間は役に立たないです.
今すぐ実戦に行きましょう.「name=rose」というCookieを設定して、3ヶ月後に期限が切れます.
 
  
var expires = new Date();
expires.setTime(expires.getTime() + 3 * 30 * 24 * 60 * 60 * 1000);
/* x 30 x 24
x 60 x 60 x 1000 */
document.cookie = 'name=rose;expires=' + expires.toGMTString();
なぜescapeを使っていませんか?これはroseが合法的なURL符号化文字列であることを知っているからです.つまり、「rose」==escape(「rose」).一般に、Cookieを設定する場合はescape()を用いず、Cookieを取得する場合はunescape()を用いない.
もう一回:指定されたCookieの値を検索するための関数を作成します.
 
  
function getCookie(cookieName) {
var cookieString = document.cookie;
var start = cookieString.indexOf(cookieName + '=');
// Cookie
// cookieName 。
if (start == -1) //
return null;
start += cookieName.length + 1;
var end = cookieString.indexOf(';', start);
if (end == -1) return unescape(cookieString.substring(start));
return unescape(cookieString.substring(start, end));
}
この関数は文字列オブジェクトのいくつかの方法を使っています.覚えていないなら、すぐに調べてください.この関数のすべてのif文はelseを持っていません.条件が成立すれば、プログラムが実行されるのはすべてreturn文です.関数にreturnを当てると、運行が終了しますので、elseを付けなくても大丈夫です.この関数はCookieを見つけるとCookieの値を返します.
私たちは先ほど設定したname=rose Cookieを削除します.
 
  
var expires = new Date();
expires.setTime(expires.getTime() - 1);
document.cookie = 'name=rose;expires=' + expires.toGMTString();
無効日を現在の日付より少し早い(ここは1ミリ秒前)に変更し、同じ方法でCookieを設定すれば、Cookieを削除することができます.