2009-06-04 7 views
1

Windows版Safari 4 Beta(ビルド528.17)にはバグがあります。 が期限切れの場合がdocument.cookieに割り当てられている場合、Cookieは変更されません。したがって、Cookieを有効にすると検出されなくなります。Safari 4ベータ版で有効になっているCookieを検出する方法

var dt = new Date(); 
dt.setSeconds(dt.getSeconds() + 2); 

document.cookie = "cookietest=1; expires=" + dt.toGMTString(); 
var cookiesEnabled = document.cookie.indexOf("cookietest=") != -1; 

私はちょうどを削除した場合、それは動作しますが、を満了します。ただし、セッション全体にダミークッキー「cookietest = 1」を残します。

私はdocument.cookieで直接操作してクッキーを削除しようとしましたが、それを行う方法がないようです。クッキーを "削除"する唯一の方法は、期限切れにすることです。

これに対応する方法はありますか?

更新日: Windows用のSafari 4 Betaにバグがあります。有効期限が1時間(3600秒)を超えていない場合、document.cookieの割り当ては失敗します。

検出後にCookieを削除できます。

var dt = new Date(); 
dt.setSeconds(dt.getSeconds() + 2); 

document.cookie = "cookietest=1"; 
var cookiesEnabled = document.cookie.indexOf("cookietest=") != -1; 

document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT"; 

答えて

1

i。エラーはサファリのビルドとは関係ありません。問題は、設定している日付です。 dt.SetSeconds(dt.getSeconds()+ 2)を使用すると、クッキーの有効期限を現在の+ 2秒に設定します。したがって、ページをロードしてクッキーをチェックするときに、クッキーの有効期限が切れます。

ii。時間を1分以上に増やし(60)、確認してください。

Ramjee

+0

署名setSeconds/getSecondsを持つ関数は、実際には秒単位ではなくミリ秒単位であることを意味しますか? FirefoxとIEとSafari 3.Xで同じコードが正常に動作します。 –

+0

こんにちはモルガン、はい、あなたは正しいです。チェックアウトしてくれないのは残念です。 しかし、私はまだクッキーの有効期限が切れていると言ったところに立っています。より高い価値を提供し、それが機能するかどうかを確認してください。 – rAm

+0

違いがあるかどうかを確認するために、図を2から大幅に増やすことをお勧めします。代わりに10000を使用すると、どうなりますか?それでも動作しない場合は、問題は他のものです。 – Fenton

0

それは本当だ - (少なくともWindows上)のSafariのクッキーを「短命」に問題があります クッキーが60分未満で失効するように設定されている場合 - それはすぐに期限切れになります。

関連する問題