Cookieの設定/削除に次のコードを使用しています:
function get_cookie(cookie_name)
{
var results = document.cookie.match('(^|;) ?' + cookie_name + '=([^;]*)(;|$)');
if (results)
return ( decodeURI(results[2]) );
else
return null;
}
function set_cookie(name, value, exp_y, exp_m, exp_d, path, domain, secure)
{
var cookie_string = name + "=" + encodeURI(value);
if (exp_y)
{
var expires = new Date(exp_y, exp_m, exp_d);
cookie_string += "; expires=" + expires.toGMTString();
}
if (path)
cookie_string += "; path=" + encodeURI(path);
if (domain)
cookie_string += "; domain=" + encodeURI(domain);
if (secure)
cookie_string += "; secure";
document.cookie = cookie_string;
}
function delete_cookie(cookie_name)
{
var cookie_date = new Date(); // current date & time
cookie_date.setTime(cookie_date.getTime() - 1);
document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
}
しかし、一貫性のない結果が得られます。たとえば、開始ページ (www.example.com/start) に設定された Cookie は、常に後続のページ (www.example.com/foo/thing.jsp) に表示されるとは限りません。を使用してページのCookie「onUnload」を設定しています
set_cookie("beginrequest", (new Date()).getTime(), null, null, null, "/");
「onLoad」を介して取得+削除する
loadDur = (new Date()).getTime() - get_cookie("beginrequest");
delete_cookie("beginrequest");
ページの読み込みにかかった合計時間を測定します。
firebug を使用すると、「残りの」beginrequest-cookie と、過去のタイムスタンプを持つ beginrequest の複数のインスタンスがよく見られます。
すべてのページで beginrequest-cookie を 1 つだけ表示するにはどうすればよいですか?