0

シンプルに聞こえて、シンプルであるべきだと思いますが、どういうわけかうまくいきません...

Javascript を使用して Cookie を設定したいのですが、ユーザーがブラウザを終了したときにこの Cookie を削除する必要があります。Cookie を設定して値を取得することは問題ではありません。しかし、ブラウザを終了して再度開いても、Cookie は残っています (Firefox)。

jQuery とCookie-Pluginを使用しています。

ここに私のテストコードがあります:

$(document).ready(function(){
$('#output').append( '<li>initialize...</li>' );

var $cookieVal = $.cookie('testCookie');

$('#output').append( '<li>check cookie...</li>' );

if(!$cookieVal) {
    $('#output').append( '<li>set cookie...</li>' );
    $.cookie('testCookie', 'eat cookies', { path: '/' });
    //console.log( $.cookie() );
} else {
    $('#output').append( '<li>cookie is already set...</li>' );
    $('#output').append( '<li>cookie value: '+$.cookie('testCookie')+'</li>' );
}
});

jsFiddleで実際の例を見つけてください。

4

2 に答える 2

1

あなたのテスト方法がここで問題になるのではないかと思い始めています。ということで、具体的に書きます。

実際の答え: ブラウザの設定

Firefox では、[オプション] > [一般] > [Firefox の起動時] > [前回のウィンドウとタブを表示する] を選択すると、以前のセッションが保持されます。この設定を変更して、これが想定どおりに実際に機能していることを確認します。Firefox がセッションを延長しています。詳細については、次の「バグ」を参照してください: http://bugzilla.mozilla.org/show_bug.cgi?id=530594

ほとんどのブラウザーには、おそらく同じように動作する同様の設定があります。


元の回答:

jquery cookie プラグインではなく document.cookie を使用するフィドルhttp://jsfiddle.net/8Ahg2/を作成しました。これをテストする方法は次のとおりです。(以下ソース)

  1. 次の URL をクリップボードにコピーします。http://fiddle.jshell.net/8Ahg2/show/
  2. 選択したブラウザーを完全に閉じます。これはブラウザーに依存しない必要があります。
  3. ブラウザを開き、URL を貼り付けます。初めて言うべきです:check cookie... set cookie...
  4. ページを更新すると、Cookie の値 ("test") が表示されるはずです。
  5. ブラウザをもう一度完全に閉じます。
  6. クリップボードに残っているはずの URL に移動します。*最初のビューでページを更新しないでください。再び「check cookie... set cookie...」と表示されます。


js

$(document).ready(function () {
    $('#output').append('<li>initialize...</li>');
    //this regex gets the "name" cookie out of the string of cookies that look like this: "name=test;var2=hello;var3=world"
    var cookieVal = document.cookie.replace(/(?:(?:^|.*;\s*)name\s*\=\s*([^;]*).*$)|^.*$/, "$1");

    $('#output').append('<li>check cookie...</li>');

    if (!cookieVal) {
        $('#output').append('<li>set cookie...</li>');
        document.cookie = "name=test";
    } else {
        $('#output').append('<li>cookie is already set...</li>');
        $('#output').append('<li>cookie value: ' + cookieVal + '</li>');
    }
});
于 2013-08-07T20:03:12.483 に答える