0

わかりましたので、画面の上部から下に切り替えるメニューバーがあります。ユーザーが最初にサイトにアクセスしたときにのみこれを確認してもらいたい. その後にアクセスするすべてのページで再生されないようにするにはどうすればよいですか?

私のjQuery:

$(function() {

    $(".bar-top").delay(700).animate({
        marginTop: '0px'
    }, 750, 'swing');


    if ( $(".banner-title").css('display') == 'block' ) {
        $(".banner-title").delay(1500).addClass("fade");
        $(".fade").fadeIn("slow");
        $(".fade").hide();
    }

});

私はクッキーの設定を調べましたが、まだ何も正しく機能していません。主な理由は、これを Cookie if ステートメントでラップする方法がわからないためです。ナビゲーションと一緒にフェードインbanner-titleするテキストです。

インデックスページでのみコードを実行し、他の場所で実行されないようにする方法はあるのでしょうか? しかし、それはそれほど良い解決策ではないかもしれません。

4

2 に答える 2

1

ユーザーがサイトで認証されていないと仮定すると、ページ リクエスト間で状態を保持する唯一の方法は、Cookie を設定することです。

チェックアウトする必要がある Cookie 管理用の優れた JavaScript API があります - https://github.com/js-cookie/js-cookie

ユーザーがサイトにアクセスしたときに、Cookie をチェックして、以前にアクセスしたことがあるかどうかを確認できます。そうでない場合は、アニメーションを表示して Cookie を設定します。実行されている場合は、アニメーションを実行しないでください。

ドキュメントを見るとjs-cookie、次のように 7 日間の Cookie を設定できます。

Cookies.set('visited', 'value', { expires: 7 });

したがって、コードは次のようになります。

// Make sure DOM has fully loaded before running code
$(function(){
    if( ! Cookies.get('visited')){
        // Your code here
        Cookies.set('visited', 'yes', { expires: 7 });
    }
});

あなたの質問の他の部分に答えるために編集してください(リマインダーMax Allenに感謝します!)

特定のページでのみコードを実行するには、ページの body タグに ID (および必要に応じてクラス) を設定することをお勧めします。例えば

if ($('body#index').length){
    // Code to only run on index page
}
于 2012-09-16T01:52:02.983 に答える
0

さて、@Tim Fletcher があなたの質問に少し答えました。

インデックスページでのみコードを実行し、他の場所で実行されないようにする方法はあるのでしょうか? しかし、それはそれほど良い解決策ではないかもしれません。

まあ、1つの解決策があるかもしれません:

if(window.location.pathname == '/index.html'){
//Your code
}

しかし、これがどれほど良いか悪いかは言いません。しかし、うまくいくかもしれません。

于 2012-09-16T01:57:40.300 に答える