• ベストアンサー

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

noname#258812
noname#258812

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

  • ベストアンサー
  • 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

  • クッキーが消せない

    下記の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を削除しました。"); } }

  • Cookie データの消し方がわからない

    次のような関数で、クッキーは設定できます。 function setteiCookie(){ var history="AnythingVeryImportant"; var expiry= new Date(); expiry.setTime( expiry.getTime() + 60*60*1000); window.document.cookie= escape("history=" + history + ";expires=" + expiry.toGMTString() + ";"); } しかし次のような関数ではクッキーデータを消すことができません。 function kesuCookie(){ var history=""; var expiry= new Date(); expiry.setTime( expiry.getTime() - 1000); window.document.cookie= escape("history=" + history + ";expires=" + expiry.toGMTString() + ";"); } どうすれば消すことができるのでしょうか? また、クッキーデータを手で消す方法も教えていただけるとありがたいです。"cookie" を検索して次のようなフォルダーを見つけましたが、自分がクッキーに設定したデータを探すことができませんでした。 c:\Program Files\Netscape\Netscape\chrome\overlayinfo c:\WINDOWS\system32\config\systemprofile どうぞよろしくお願いいたします。 papashiro

  • javascriptでクッキーを書き出しているんですが、確実にクッキー

    javascriptでクッキーを書き出しているんですが、確実にクッキーの値を上書きするにはどうすればいいのでしょうか? 通常では同じkeyがあれば上書きされるはずですよね?それなのに、クッキーの内容を確認すると同じkeyで値が違うものができていて判定ができない状態です。 上書きされないという問題の原因が自分ではわかりません。何か原因があるとすれば解決方法などありますでしょうか? どなたか是非ご教示の程お願いします。 /*クッキー作成の関数*/ function SetCookie(Value){ Expires = new Date(); //日付オブジェクト作成 Expires.setTime(Expires.getTime()+(1000*60*60*24*365)); //デフォルト1年有効 Expires = "expires=" + Expires.toGMTString(); //クッキーの有効期限を作成 SetData = "Area=" + escape(Value) + ";"; //クッキー名=値 を作成 document.cookie = SetData + Expires + ";domain=123456789;path=/;"; //クッキー発行 }

  • フォーム内容を上から順番にJavaScriptでCookieに入れて、また戻す方法

    フォームにかかれている内容を上から順番にCookieに入れて 次にそのページに来たときに読みこれるようにしたいのですが、わからなくなってしまいました。 まず下記でJavaScriptに値を渡します。 onClick="saveCookie(this.form.elements[0].value,this.form.elements[1].value,this.form.elements[2].value) 次にJavaScriptで処理します。 ----------------------------------------------- xDay = new Date; xDay.setYear(xDay.getYear() + 1); xDay = xDay.toGMTString(); cook = new Array(); function saveCookie(value01,value02,value03){ cook[0] = value01; cook[1] = value02; cook[2] = value03; cooks = escape(cook[0]); i = 1; while (cook[i]){ cooks += "%00" + escape(cook[i]); i++; } document.cookie = "fat_cookie=" + cooks + "; expires=" + xDay; } function loadCookie(){ cooklng = document.cookie.length; cook = document.cookie.split("; "); cooks = ""; i = 0; while (cook[i]){ if (cook[i].substr(0,11) == "fat_cookie="){ cooks = cook[i].substr(11,cook[i].length); break; } i++; } cook = cooks.split("%00"); ??? = unescape(cook[0]); ←ここがわかりません。 } window.onload=loadCookie; ----------------------------------------------- Cookieに保存して、またバラバラにするところまでは出来たのですが 最後にフォームに戻すところでわからなくなってしまいました。 色々試したのですがうまくいきません。 どなたかわかる方いらっしゃいましたら、 よろしくお願いします。

  • javascript joinについて

    var options = new Array(); options.push("expires=" + d.toGMTString()); // 引数『key』『value』を元にした設定と、時刻の設定を、 // 文字列結合してクッキーに書き込み document.cookie = escape(key) + "=" + escape(value) + "; " + options.join("; "); // 『key=value; expires=時間』を書き込み 参考書で上記のような表現があります。 この場合のjoinは  expires= と d.toGMTString() の間に ; を入れるという意味かと思ったのですが どうやら違うみたいす。 検索しても解決できませんでした。どなたか御教授お願いします。

  • javascriptでのcookieについて

    javascriptでアクセスする人にcookieをつけるようにしています。 cookieの情報をサイト内(同一ドメイン内)で共有したいので、path=/ をつければ良いと思うのですが、以下のソースの場合、どのように記載すればよいでしょうか? <!-- theName="onload_texta="; theday=90; //---------------------------------------------- function onload_text_set(){ theCookie=document.cookie+";"; start=theCookie.indexOf(theName); if(start !=-1){ end=theCookie.indexOf(";",start); theData=theCookie.substring(start+theName.length,end); document.showform.showcheck.checked=(theData=="t")?true:false; if(theData=="f") document.getElementById('show').style.display='block'; else document.getElementById('show').style.display='none'; } else document.getElementById('show').style.display='block'; } function onload_text_close(){ myData="";setDay=new Date(); myData=(document.showform.showcheck.checked==true)?"t":"f"; setDay.setTime(setDay.getTime()+(theday*1000*60*60*24)); document.cookie=theName+myData+";expires="+setDay.toGMTString(); } onload=onload_text_set; onunload=onload_text_close // -->

  • Cookieへの書き込みは出来たのですが・・・

    Cookieに書き込んだjavaScriptの情報をjavaで取得する方法はありますか? ソースは下の通りです。 <script language="JavaScript" type="text/javascript"> <!-- kikan=90; my_name="1"; my_datas=new Array(); my_datas2=new Array(); my_name="TestMan"+my_name; function DataRead() { if(document.cookie.length>0 && document.cookie.indexOf(my_name)!=-1) { my_datas=document.cookie.split("; "); for(i=0; i<my_datas.length; i++) {if(my_datas[i].indexOf(my_name)!=-1)break;} my_datas2=my_datas[i].split("="); my_datas2[1]=unescape(my_datas2[1]); } return my_datas2[1]; } function DataWrite(datas) { jikann=new Date(); ima=new Date(jikann.getTime()+(kikan*24*60*60*1000)); datas=escape(datas); document.cookie=my_name+"="+datas+";expires="+ima.toGMTString(); return; } CookieData="TEST"; DataWrite(CookieData); //--> </script>

  • Cookie情報取得についてです。

    Cookieに書き込んだjavaScriptの情報をhtmlで取得する方法はありますか? ソースは下の通りです。 <script language="JavaScript" type="text/javascript"> <!-- kikan=90; my_name="1"; my_datas=new Array(); my_datas2=new Array(); my_name="TestMan"+my_name; function DataRead() { if(document.cookie.length>0 && document.cookie.indexOf(my_name)!=-1) { my_datas=document.cookie.split("; "); for(i=0; i<my_datas.length; i++) {if(my_datas[i].indexOf(my_name)!=-1)break;} my_datas2=my_datas[i].split("="); my_datas2[1]=unescape(my_datas2[1]); } return my_datas2[1]; } function DataWrite(datas) { jikann=new Date(); ima=new Date(jikann.getTime()+(kikan*24*60*60*1000)); datas=escape(datas); document.cookie=my_name+"="+datas+";expires="+ima.toGMTString(); return; } CookieData="TEST"; DataWrite(CookieData); //--> </script> 最終的には「TEST」を取得したいのですが、よい方法は無いでしょうか?

  • JavascriptとCookieについて

    HTML【index.php】でフォームを作り、クリック時にCookieに保存 →別ページ【input.php】で保存したCookieで判断し内容を変更するページを作ろうと思っています。 http://memo.ark-under.net/memo/404 こちらのページを参考に以下のように作ってみたのですが動作しません。 JavascriptとPHPを使えたらどんな方法でも良いので、ご教授お願い致します。 最近勉強を始めた初心者ですので、なるべく簡単に教えていただけると幸いです。 ----------------------------------------------------------------------- ----------------------------------------------------------------------- 【index.php】 <script type="text/javascript"> // クッキー保存 setCookie(クッキー名, クッキーの値, クッキーの有効日数); // function setCookie(c_name,value,expiredays){ // pathの指定 var path = location.pathname; // pathをフォルダ毎に指定する場合のIE対策 var paths = new Array(); paths = path.split("/"); if(paths[paths.length-1] != ""){ paths[paths.length-1] = ""; path = paths.join("/"); } // 有効期限の日付 var extime = new Date().getTime(); var cltime = new Date(extime + (60*60*24*1000*expiredays)); var exdate = cltime.toUTCString(); // クッキーに保存する文字列を生成 var s=""; s += c_name +"="+ escape(value);// 値はエンコードしておく s += "; path="+ path; if(expiredays){ s += "; expires=" +exdate+"; "; }else{ s += "; "; } // クッキーに保存 document.cookie=s; } <form action="input.php" method="post"> ボタン1:<input type="submit" name="input" value="入力" onsubmit="return setCookie('hanteisql','1',7)"> ボタン2:<input type="submit" name="input2" value="入力" onsubmit="return setCookie('hanteisql','1',7)"> </form> ----------------------------------------------------------------------- ----------------------------------------------------------------------- 【input.php】 <?php echo "クッキーは".$_COOKIE["hanteisql"]."です。" ?> -----------------------------------------------------------------------

  • Perl cookie 削除か書込

    Perl cookie cookie→NAMEというクッキーデータを 削除か、まったく別のものに書き換えたいのですが、どうすればいいのでしょうか? 現在はJavaScriptで書き込んでいるのですが、 <script> \$(function(){ \$('#NAME).val(\$.cookie("NAME")); \$("#Login").click(function(){ \$.cookie("NAME",\$('#NAME).attr('value'), { expires: 365 }); location.href="$MYURL" }) }) </script> Perl ソース中で、PerlでこのNAMEを消したい 瞬間があります。 もしくは、書き換えたいです。 やりかたを教えて下さい。 調べてはいるものの うまくいきません。

専門家に質問してみよう