ホームページ >ウェブフロントエンド >jsチュートリアル >Cookie を作成するための JavaScript コード ライブラリ cookieLibrary.js_javascript のヒント
/* Cookie ライブラリ -- 「Night of the Living Cookie」バージョン (1996 年 7 月 25 日)
2 缔友计算机信息技术有限公司,涂聚文 geovindu@163.com 互相交流
3 作者: Bill Dortch 、hIdaho Design
4 以下の機能はパブリックドメインに公開されています。
5http://www.dusystem.com/
6 このバージョンでは、
7 個の Cookie を削除するために、より積極的なアプローチが採用されています。以前のバージョンでは、有効期限が現在時刻の 1
8 ミリ秒前に設定されていました。ただし、このメソッド
9 は Netscape 2.02 では機能しませんでした (ただし、以前のバージョンと
後のバージョンでは機能しました)。その結果、
死なない「ゾンビ」クッキーが生成されました。 DeleteCookie は、有効期限を最も早い
使用可能な日付 (1970 年から 1 秒) に設定し、Cookie の値
を適切な値に設定するようになりました。
また、このバージョンでは、
DeleteCookie 関数にオプションのパスとドメインのパラメータが追加されています。 Cookie** の作成 (設定) 時にパスやドメイン
を指定した場合、Cookie** を削除するときに同じ
パス/ドメインを指定する必要があります。そうしないと、削除は行われません。
2.x Mac の日付バグを修正するには、FixCookieDate 関数を明示的に呼び出す必要があります。
この関数は、Date オブジェクトが作成された後、(有効期限として) SetCookie に渡される前に、
*1 回**呼び出される必要があります。
Mac の日付のバグは、
SetCookie に渡された日付だけでなく、すべての日付に影響するため、新しい Date オブジェクトを作成するたびに
FixCookieDate を呼び出すことを習慣にすることをお勧めします:
var theDate = new Date();
FixCookieDate (theDate);
FixCookieDate の呼び出しは、
Mac 以外のプラットフォームには影響しないため、呼び出す前にユーザーのプラットフォームを
確認する必要はありません。
このバージョンには、いくつかのマイナーなコーディングの改善も組み込まれています。
**同じ
名で異なる (ネストされた) パスを持つ複数の Cookie を設定できることに注意してください。例:
SetCookie ("color","red",null,"/outer");
SetCookie ("color","blue",null,"/outer/inner");
ただし、GetCookie はこれらを区別できないため、
指定された名前に一致する最初の Cookie を返します。したがって、
異なるパスの Cookie に同じ名前を使用しないことをお勧めします。 (Cookie には *常に* パスが
関連付けられていることに留意してください。明示的に指定しない場合は、
設定ドキュメントのパスが使用されます。)
改訂履歴:
"Toss Your Cookies" バージョン (22-Mar-96)
- Mac の日付バグを修正する FixCookieDate() 関数を追加
"Second Helping" バージョン (21-Jan) -96)
- SetCookie にパス、ドメイン、安全なパラメータを追加
- ホームロールのエンコード/デコード関数を Netscape の
新しい (当時の) エスケープ関数とアンエスケープ関数に置き換えました
"Free Cookies " バージョン (95 年 12 月)
Cookie パラメータの重要性、
および Cookie 一般については、次の URL にある公式 Cookie
仕様を参照してください。
http:www.netscape.com/newsref/std/cookie_spec.html
************************* **************************************** */
/* *//* Cookie のデコードされた値を返す「内部」関数*/
endstr = document.cookie.length;
}
return unescape(document.cookie.substring(offset, endstr));
}
/**//* 2.x Mac の日付バグを修正する関数。 SetCookie に渡す前に、この関数を呼び出して日付オブジェクトを
重要: この関数は、
特定の日付オブジェクトに対して *1 回*だけ呼び出す必要があります。このドキュメントの最後にある例を参照してください。*/
if (skew > 0) { // Mac を除く - 時刻より進んでいます
date.setTime(date.getTime() - skew);
}
}
/**//* "name"で指定されたCookieの値を返す関数。
戻り値 - Cookie 値を含む文字列オブジェクト。
Cookie が存在しない場合は null。*/
function GetCookie (name) {
var temp = name "=";
var tempLen = temp.length;
var cookieLen = document.cookie.length;
var i = 0;
while (i < cookieLen) {
var j = i tempLen;
if (document.cookie.substring(i, j) == temp) {
return getCookieVal(j);
}
i = document.cookie.indexOf(" ", i) 1;
if (i == 0) ブレーク;
}
null を返します。
}
/**//* Cookie を作成または更新する関数。
name - Cookie 名を含む文字列オブジェクト。
value - Cookie 値を含む文字列オブジェクト。
任意の有効な文字列文字を含めることができます。
[expiresDate] - Cookie の有効期限データを含む日付オブジェクト。
省略または null の場合、現在のセッションの終了時に Cookie が期限切れになります。
[path] - Cookie が有効なパスを示す文字列オブジェクト。
省略または null の場合、呼び出し元のドキュメントのパスが使用されます。
[ドメイン] - Cookie が
有効であるドメインを示す文字列オブジェクト。省略または null の場合、呼び出し元のドキュメントのドメインが使用されます。
[secure] - Cookie の送信に
安全なチャネル (HTTPS) が必要かどうかを示すブール値 (true/false)。
最初の 2 つのパラメータは必須です。他のものは、指定されている場合、
上記の順序で渡す必要があります。未使用のオプション フィールドを省略するには、
プレースホルダーとして null を使用します。たとえば、名前、
値、およびパスを使用して SetCookie を呼び出すには、次のようにコーディングします。
SetCookie ("myCookieName", "myCookieValue", null, "/");
末尾の省略されたパラメーターにはプレースホルダーが必要ないことに注意してください。
パス "/myPath" に安全な Cookie を設定し、
現在のセッション後に期限切れになるようにするには、次のようにコード化します:
SetCookie (myCookieVar, cookieValueVar, null, "/myPath" 、null、true);*/
function SetCookie (name,value,expiresDate,path,domain,secure) {
document.cookie = name "="エスケープ (値)
((expiresDate) ? "; expires="expiresDate.toGMTString() : "")
((パス) ? "; path=" パス : "")
((ドメイン) ? "; ドメイン="ドメイン : "")
((安全) ? "; 安全" : "");
}
/**//* Cookieを削除する関数。 (有効期限をエポックの開始日に設定します)
name - Cookie 名を含む文字列オブジェクト
path - 削除する Cookie のパスを含む文字列オブジェクト。これは、
Cookie の作成に使用されたパスと同じでなければなりません。
Cookie の作成時にパスが指定されなかった場合は、null/省略されます。
domain - 削除する Cookie のドメインを含む文字列オブジェクト。これは、
Cookie の作成に使用されたドメインと同じでなければなりません。
Cookie の作成時にドメインが指定されなかった場合は、null/省略されます。*/
function DeleteCookie (name,path,domain) {
if (GetCookie(name)) {
document.cookie = name "="
((path ) ? "; path=" パス : "")
((ドメイン) ? "; ドメイン="ドメイン : "")
"; 有効期限=70 年 1 月 1 日木 00:00:01 GMT ";
}
}
// 呼び出し例:
// var expdate = new Date ();
// FixCookieDate (expdate); // Mac の日付バグを修正 - 指定された Date オブジェクトに対して 1 回だけ呼び出します。
// expdate.setTime (expdate.getTime() (24 * 60 * 60 * 1000)); // 今から 24 時間後
// SetCookie ("ccpath", "http://www.dupcit.com/articles/", expdate);
// SetCookie ("ccname", "WebWoman", expdate);
// SetCookie ("tempvar", "これは一時的な Cookie です。");
// SetCookie ("ユビキタス", "この Cookie はこのドメイン内のどこでも機能します",null,"/");
// SetCookie ("paranoid", "この Cookie には安全な通信が必要です",expdate,"/",null,true);
// SetCookie ("goner", "このクッキーは死ぬ必要があります!");
// document.write (document.cookie "
");
// DeleteCookie ("goner");
// document.write (document.cookie "
");
// document.write ("ccpath = " GetCookie("ccpath") "
");
// document.write ("ccname = " GetCookie("ccname") "
");
// document.write ("tempvar = " GetCookie("tempvar") "
");