2012-06-11 76 views
1

我有一個簡單的jQuery功能 - 只是fadeouts索引網頁div:運行jQuery函數只是一次每次訪問

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

這只是一個消息,並啓動屏幕的用戶會看到當他們第一次來到網站。

我想知道是否有人知道如何讓啓動消息每次訪問只顯示一次。 EG:如果用戶返回索引頁面來說aboutus頁面,我不希望啓動div再次出現。

有沒有人知道一種方法來實現這一目標?

謝謝!

回答

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/

你會看到動畫的第一次,但不是第二個,除非你等一分鐘(你可以將它設置爲幾個小時爲您的網站)。

+0

感謝 - 但我似乎無法得到它的工作... – MeltingDog

+0

這裏有一個[小提琴](http://jsfiddle.net/dystroy/9RRyf/)證明它。有用。但是您必須等待24小時才能再次看到警報(您可以在代碼中進行調整)。 –

+0

Thanks dystroy - 問題是我的原始代碼$('#startup')。delay(1500).fadeOut(2000);不再有效 – MeltingDog

2

您可以設置一個可以檢查的cookie,看看這是否是第一次訪問。

如果您希望顯示「每次訪問」,則可以將其設置爲在會話結束時過期。

1

我會使用localstorage來做這個...... 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()); 
    }