每次访问只运行一次JQuery函数

时间:2012-06-11 11:53:01

标签: jquery fadeout

我有一个简单的JQuery函数 - 只需在索引页面上淡出div:

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

这只是一个启动屏幕,其中包含用户第一次访问该网站时看到的消息。

我想知道是否有人知道如何在每次访问时只显示一次启动消息。 EG:如果用户从aboutus页面导航回索引页面,我不希望再次出现启动div。

有谁知道实现这个目标的方法?

谢谢!

3 个答案:

答案 0 :(得分: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/

你会第一次看到动画,但不是第二次动画,除非你等待一分钟(你可以为你的网站设置几个小时)。

答案 1 :(得分:2)

您可以设置一个可以检查的Cookie,看看这是否是第一次访问。

如果您希望每次访问都显示“

”,则可以设置为在会话结束时到期。

答案 2 :(得分: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());
    }