- ベストアンサー
javascriptでcookieを削除するには
以下のようにjavascriptでcookieを削除できると 思いますが、この方法だと IE以外のブラウザは削除できてないようです。 FIREFOXとOPERAは削除できませんでした。 javascriptでFIREFOXとOPERAでもクッキーが削除 できるような方法がありましたらご教授願います cName = "○○○○="; // 削除するクッキー名 dTime = new Date(); dTime.setYear(dTime.getYear() - 1); document.cookie = cName + ";expires=" + dTime.toGMTString();
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
javascriptのcookie操作は そもそも「書込み」しかできないよ。 削除とかそういうのは無いんだよ。 方法はただ一つ。 「有効期間切れにする」しかない。 有効期間が切れたcookieは「通常」ブラウザを終了すると削除される……… 有効期間に関しては個々個々の設定で異なるからあり得ない古い日付を設定するくらいしかやりようがないんじゃないかな。
その他の回答 (4)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
クッキーの文法は ID=value; ですので document.cookie = cName + "=; expires=" + dTime.toGMTString()+"; "; こんな感じでどうでしょうか。 未検証です。 var ret=SetCookie( { cName: '' , expires: '-1' } ); alert(ret); function SetCookie(prop){ var ar=[]; for(var k in prop) ar.push(k+'='+prop[k]); document.cookie=ar.join('; '); return document.cookie; }
お礼
アドバイスありがとうございます。
- auty
- ベストアンサー率58% (284/486)
>>> cookieはjavascriptで再度出力されてしまいます。 これは、どのような方法で出力していますか。 削除後次のように確認してみたところ全く問題はなさそうです。 alert(document.cookie); 確かに、IEとFirefox共に、○○○○は消えています。
お礼
出力は以下のように行っています。 var cookies = new Array(); var element; var str; var i; if (document.cookie) { element = document.cookie.split('; '); for (i = 0; i < element.length; i++) { str = element[i].split('='); cookies[str[0]] = str[1]; } } if (cookies['○○○']){ str = unescape(cookies['○○○']); alert(str);//ここでクッキー出力 } アドバイスありがとうございました。
- auty
- ベストアンサー率58% (284/486)
次のいずれかの方法を試していただけますか。 1. setYear()、getYear() ではなく setFullYear()、getFullYear() を使う。 2. expiresではなく、新しい属性 max-age (秒単位)を使う。 ; max-age=0
お礼
アドバイスありがとうございます。 1と2両方試しましたが、cookieのはjavascriptで再度出力されてしまいます。 max-ageは知りませんでした。ありがとうございます。
- yambejp
- ベストアンサー率51% (3827/7415)
こんな感じで実装してませんか? function delCookie(key){ expiredate = new Date(); expiredate.setYear(expiredate.getYear()-1); tmp = key+"=;"; tmp += "expires="+expiredate.toGMTString(); document.cookie = tmp; };
お礼
アドバイスありがとうございます。 質問文のように、 いっぺんにまとめて代入しています。 document.cookie = cName + "; expires=" + dTime.toGMTString();
お礼
cookieの削除はないんですね。 IEやFIREFOXでは、 ブラウザからcookieの削除ができる機能がありますが、 その機能を使って削除しても、 javascriptでcookieを出力すると表示されてしまいます。 原理は分かったのですが、どうして残ってしまってるのか 不思議です。 IEのツール→インターネットオプション→全般タブ→cookieの削除は いったい何を削除しているのでしょうね。 それにしても、削除できない原因が判明しすっきりしました。 ありがとうございます。