dポイントプレゼントキャンペーン実施中!

以下のようにjavascriptでcookieを削除できると
思いますが、この方法だと
IE以外のブラウザは削除できてないようです。
FIREFOXとOPERAは削除できませんでした。
javascriptでFIREFOXとOPERAでもクッキーが削除
できるような方法がありましたらご教授願います

cName = "○○○○="; // 削除するクッキー名
dTime = new Date();
dTime.setYear(dTime.getYear() - 1);
document.cookie = cName + ";expires=" + dTime.toGMTString();

A 回答 (5件)

javascriptのcookie操作は そもそも「書込み」しかできないよ。


削除とかそういうのは無いんだよ。

方法はただ一つ。
「有効期間切れにする」しかない。
有効期間が切れたcookieは「通常」ブラウザを終了すると削除される………
有効期間に関しては個々個々の設定で異なるからあり得ない古い日付を設定するくらいしかやりようがないんじゃないかな。
    • good
    • 0
この回答へのお礼

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

それにしても、削除できない原因が判明しすっきりしました。
ありがとうございます。

お礼日時:2008/05/28 21:44

クッキーの文法は


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;
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/29 20:38

>>> cookieはjavascriptで再度出力されてしまいます。



これは、どのような方法で出力していますか。

削除後次のように確認してみたところ全く問題はなさそうです。

alert(document.cookie);

確かに、IEとFirefox共に、○○○○は消えています。
    • good
    • 0
この回答へのお礼

出力は以下のように行っています。

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);//ここでクッキー出力
}

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

お礼日時:2008/05/29 20:44

次のいずれかの方法を試していただけますか。



1. setYear()、getYear() ではなく

   setFullYear()、getFullYear()
   を使う。

2. expiresではなく、新しい属性 max-age (秒単位)を使う。

   ; max-age=0
   
    • good
    • 0
この回答へのお礼

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

1と2両方試しましたが、cookieのはjavascriptで再度出力されてしまいます。

max-ageは知りませんでした。ありがとうございます。

お礼日時:2008/05/28 21:46

こんな感じで実装してませんか?



function delCookie(key){
expiredate = new Date();
expiredate.setYear(expiredate.getYear()-1);
tmp = key+"=;";
tmp += "expires="+expiredate.toGMTString();
document.cookie = tmp;
};
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
質問文のように、
いっぺんにまとめて代入しています。

document.cookie = cName + "; expires=" + dTime.toGMTString();

お礼日時:2008/05/28 21:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!