- ベストアンサー
クッキーが消せない
下記のDelcookieを呼び出してクッキーを削除したのですがdocument.write(document.cookie);で見ると0421066NQ=Tdoprzahdoqekdnaaac&04aaacと表示されてクッキーが消せません。 スクリプトでクッキーを消すにはどうすれば良いのでしょう? function Delcookie(){ if(document.cookie==""){ alert("このサーバによるCookieはありません。") }else{ tmp=document.cookie.split(";"); dTime = new Date(); dTime.setYear(dTime.getYear() - 1); for(i=0;i<tmp.length;i++){ temp1=tmp[i].split("=")[0]; document.cookie=temp1+"=;expires=" + dTime.toGMTString(); } alert("このサーバによるCookieを削除しました。"); } }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
add=住所;name=ポチ;0421066NQ=Tdoprzahdoqekdnaaac&04aaac とクッキーに書き込んで、上記の Delcookie() を試したところ、きれいに消えましたが・・。 (ブラウザは WinXP + IE 6.0) 少し気になるのは、クッキーの書き込みは escape でエスケープしていますか? 書き込み時は escape 、読み込み時は unescape しないと、 名前や値に「;」が含まれている場合に不具合が発生しやすく、 クッキーに削除できないゴミが残ってしまう場合があります。 (2バイト文字の中に特殊なコードが含まれていてバグになる場合も・・?) 関係ないかもしれませんが、参考まで。
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
クッキーは、クッキーの期限を現在時より前にして削除するのですが、時刻を設定しただけでは、削除されません。 実際に消されるのは ブラウザ終了時(次の起動時?)です。 一度ブラウザを終了して、起動したら消えているはず。
補足
BLUEPIXYさん回答ありがとうございます。 ちょっと説明不足だったので補足させていただきます。 現象としては add=住所;name=ポチ;0421066NQ=Tdoprzahdoqekdnaaac&04aaac とクッキーに書き込まれている状態でfunction Delcookie()を呼び出すとクッキーが部分的に削除されて0421066NQ=Tdoprzahdoqekdnaaac&04aaacだけがクッキーに残ってしまっているのです。 ちなみにサーバーにアップしてるのではなくホームページビルダーのプレビュー画面で発行したクッキーです。
お礼
回答ありがとうございます。 書き込み時のescapeと読み込み時のunescapeは実行しています。 >クッキーに削除できないゴミが残ってしまう場合があります。 ゴミを消すには、IEのツール→オプション→Cookieの削除しか方法がないのでしょうか?