• ベストアンサー

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();

質問者が選んだベストアンサー

  • ベストアンサー
  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2

javascriptのcookie操作は そもそも「書込み」しかできないよ。 削除とかそういうのは無いんだよ。 方法はただ一つ。 「有効期間切れにする」しかない。 有効期間が切れたcookieは「通常」ブラウザを終了すると削除される……… 有効期間に関しては個々個々の設定で異なるからあり得ない古い日付を設定するくらいしかやりようがないんじゃないかな。

noname#258812
質問者

お礼

cookieの削除はないんですね。 IEやFIREFOXでは、 ブラウザからcookieの削除ができる機能がありますが、 その機能を使って削除しても、 javascriptでcookieを出力すると表示されてしまいます。 原理は分かったのですが、どうして残ってしまってるのか 不思議です。 IEのツール→インターネットオプション→全般タブ→cookieの削除は いったい何を削除しているのでしょうね。 それにしても、削除できない原因が判明しすっきりしました。 ありがとうございます。

その他の回答 (4)

回答No.5

クッキーの文法は 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; }

noname#258812
質問者

お礼

アドバイスありがとうございます。

  • auty
  • ベストアンサー率58% (284/486)
回答No.4

>>> cookieはjavascriptで再度出力されてしまいます。 これは、どのような方法で出力していますか。 削除後次のように確認してみたところ全く問題はなさそうです。 alert(document.cookie); 確かに、IEとFirefox共に、○○○○は消えています。

noname#258812
質問者

お礼

出力は以下のように行っています。 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)
回答No.3

次のいずれかの方法を試していただけますか。 1. setYear()、getYear() ではなく    setFullYear()、getFullYear()    を使う。 2. expiresではなく、新しい属性 max-age (秒単位)を使う。    ; max-age=0    

noname#258812
質問者

お礼

アドバイスありがとうございます。 1と2両方試しましたが、cookieのはjavascriptで再度出力されてしまいます。 max-ageは知りませんでした。ありがとうございます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

こんな感じで実装してませんか? function delCookie(key){ expiredate = new Date(); expiredate.setYear(expiredate.getYear()-1); tmp = key+"=;"; tmp += "expires="+expiredate.toGMTString(); document.cookie = tmp; };

noname#258812
質問者

お礼

アドバイスありがとうございます。 質問文のように、 いっぺんにまとめて代入しています。 document.cookie = cName + "; expires=" + dTime.toGMTString();

関連するQ&A

専門家に質問してみよう