JavaScriptでCookieを保存するコードを書きました。次に、割り当てた値に関係なく、Cookieをクリアする必要があります。
Javascript によって生成されたすべてのCookieを削除するスクリプトモジュールはありますか?
document.cookie = 'ppkcookie2=another test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
他にどのようにしてすべてのCookieをクリアできますか?
Webサーバーでコードをテストするときに問題は発生しますか?
一見、大丈夫そうです-document.cookie
から読み取られた各CookieでeraseCookie()
を呼び出すと、すべてのCookieが失われます。
これを試してください:
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++)
eraseCookie(cookies[i].split("=")[0]);
これらすべてに、次の注意事項があります。
ブラウザのCookieを削除する100%の解決策はありません。
問題は、Cookieがキーの「名前」だけでなく、「ドメイン」と「パス」によって一意に識別されることです。
Cookieの「ドメイン」と「パス」を知らないと、確実に削除できません。この情報は、JavaScriptのdocument.cookie
から入手できません。 HTTP Cookieヘッダーからも利用できません!
ただし、Cookieの名前、パス、およびドメインがわかっている場合は、過去の有効期限を持つ空のCookieを設定することにより、Cookieをクリアできます。次に例を示します。
function clearCookie(name, domain, path){
var domain = domain || document.domain;
var path = path || "/";
document.cookie = name + "=; expires=" + +new Date + "; domain=" + domain + "; path=" + path;
};
すぐに貼り付けたい場合は...
document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); });
ブックマークレットのコード:
javascript:(function(){document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); }); })();
これはアプリケーションで使用している関数であり、正常に機能しています。
cookieの削除:引数なしのメソッド
function clearListCookies()
{
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++)
{
var spcook = cookies[i].split("=");
deleteCookie(spcook[0]);
}
function deleteCookie(cookiename)
{
var d = new Date();
d.setDate(d.getDate() - 1);
var expires = ";expires="+d;
var name=cookiename;
//alert(name);
var value="";
document.cookie = name + "=" + value + expires + "; path=/acc/html";
}
window.location = ""; // TO REFRESH THE PAGE
}
編集:これは、昨日の日付に設定することにより、Cookieを削除します。
なぜ静的なUTC文字列の代わりに新しい日付を使用するのですか?
function clearListCookies(){
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++){
var spcook = cookies[i].split("=");
document.cookie = spcook[0] + "=;expires=Thu, 21 Sep 1979 00:00:01 UTC;";
}
}