1

私は単純なJQuery関数を持っています-インデックスページのdivをフェードアウトするだけです:

$('#startup').delay(1500).fadeOut(2000);

これは、ユーザーが最初にサイトにアクセスしたときに表示されるメッセージを表示する単なるスタートアップ画面です。

スタートアップメッセージを1回の訪問につき1回だけ表示する方法を誰かが知っているのだろうかと思っていました。例:ユーザーがaboutusページからインデックスページに戻った場合、スタートアップdivを再度表示したくありません。

誰かがこれを達成する方法を知っていますか?

ありがとう!

4

3 に答える 3

6

訪問した時間をlocalStorageに保存して、確認するだけです。

var now = (new Date()).getTime();
var lastTime = 0;
var lastTimeStr = localStorage['lastTime'];
if (lastTimeStr) lastTime = parseInt(lastTimeStr, 10);
if (now - lastTime > 24*60*60*1000) {
     // do animation
} 
localStorage['lastTime'] = ""+now;

編集:私はそれを示すフィドルを作りました:

http://jsfiddle.net/dystroy/jAjLB/

アニメーションは最初に表示されますが、2回目は表示されません。ただし、1分待つ場合を除きます(サイトでは数時間に設定できます)。

于 2012-06-11T11:57:50.337 に答える
2

これが最初の訪問であるかどうかを確認できるCookieを設定できます。

これは、「訪問ごと」に表示する場合は、セッションの終了時に期限切れになるように設定できます。

于 2012-06-11T11:55:42.423 に答える
1

これにはlocalstorageを使用します...Cookieはページヘッダーとともに送信され、サーバーがこの値を気にしない場合はCookieを使用する必要はありません。

 /* Here are some utility localStorage functions */
    function store_data(data, key) {
        if (!window.localStorage || !window.JSON) {
            return;
        }
        key = key || data_key;
        localStorage.setItem(key, JSON.stringify(data));
    }

    function get_data(key) {
        if (!window.localStorage || !window.JSON) {
            return;
        }
        key = key || data_key;
        var item = localStorage.getItem(key);

        if (!item) {
            return;
        }

        return JSON.parse( item );
    }

    function remove_data(key) {
        if (!window.localStorage || !window.JSON) {
            return;
        }
        key = key || data_key;
        localStorage.removeItem(key);
    }
   /* and the check */ 
   var now = (new Date()).getTime(),
       then = parseInt(get_data('last_visit'), 10) || 0,
       diff = now - then;
    if( diff > 24*60*60*1000 ) {
       $('#startup').delay(1500).fadeOut(2000);
       store_data('last_visit', (new Date()).getTime());
    }
于 2012-06-11T11:59:46.883 に答える