0

cookie.jsライブラリを使用して DNN Cookie をクリアしようとしています。ユーザーがログインをクリックすると、CMS 経由でログインする必要があります。次に、jquery は次のことを行う必要があります。

Cookieが設定されているかどうかを確認します(設定されている場合は、ログインリンクを非表示にしてログオフを表示します)

これが私の試みです:

HTML:

<a id="dnn_dnnLOGIN_cmdLogin" href="Login">
    Login
</a>

||

<a id="dnn_dnnLOGIN_cmdLogin" href="Logoff">
    Logoff
</a>

<br />

<a id="see" href="#">
    see if cookie is set?
</a>

Jクエリ:

$('#dnn_dnnLOGIN_cmdLogin').live('click', function() {
    var preval = $.cookie('DNN-COOKIE');
    if(preval != null) {
        $(this).hide();
    } else {
    var action = $(this).attr('href');
    var cookie_value = (action == 'Login') ? 1 : null;

    $.cookie('DNN-COOKIE', cookie_value);
    }
    return false;
});

// clicking on 'see' should bring up an alert box display the cookie value of 1 or 0
$('#see').live('click', function() {

    alert($.cookie('DNN-COOKIE'));

    return false;
});

この JsFiddle にライブラリ リソースを追加しました: http://jsfiddle.net/whQaq/ Cookie が設定されているかどうかを確認する必要があります。

編集: これは動作しているように見える例ですが、DNN でコードをスキン ファイルに配置すると動作しません。 http://jsfiddle.net/whQaq/3/

4

1 に答える 1

1

私は以下をテストします:

$.cookie('DNN-COOKIE', null);

次に取得します。

var preval = $.cookie('DNN-COOKIE')

そして次のように主張します。

preval === null;

いずれにせよ、おそらく使用する方が安全です。

if(!preval) {
    $(this).hide();
}

アップデート:

Cookie をドメインのルートに設定する必要があるのでしょうか。

$.cookie('the_cookie', 'the_value', { path: '/' });

サブドメインを使用している場合は、その可能性があります。

于 2012-04-24T16:23:03.263 に答える