每天展示一次div

时间:2011-11-15 06:07:02

标签: php javascript jquery

<div class="ads">Some text</div>

想要:

  1. 每个访问者每天显示一次此块(无注册)(默认隐藏,cookie检查,应该使用什么?)
  2. 如果块已经显示今天,则不要再显示今天
  3. 如果块显示 yeasterday 且有一天过去,则再次显示 (如何正确检查有一天过去了?)
  4. 我该怎么做?

    具有此功能的网站示例:

    http://premiumpixels.com

    http://365psd.com

4 个答案:

答案 0 :(得分:8)

我创建了使用cookie实现需求的示例代码:

取决于jQueryCookie plugin

<html>
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
        <script type="text/javascript" src="https://github.com/carhartl/jquery-cookie/raw/master/jquery.cookie.js"></script>
        <script type="text/javascript">                                         
        $(document).ready(function() {
            if( $.cookie('showOnlyOne') ){
                //it is still within the day
                //hide the div
                $('#shownOnlyOnceADay').hide();
            } else {
                //either cookie already expired, or user never visit the site
                //create the cookie
                $.cookie('showOnlyOne', 'showOnlyOne', { expires: 1 });

                //and display the div
                $('#shownOnlyOnceADay').show();
            }
        });
        </script>     
    </head>
    <body>
        <div id="shownOnlyOnceADay">
            This text should only be shown once a day!
        </div>
    </body>
</html>

通过更改系统日期对其进行测试。

答案 1 :(得分:2)

您可以使用这样的代码,假设您总是从div开始将其样式display属性设置为none

if(localStorage.last){
    if( (localStorage.last - Date.now() ) / (1000*60*60*24) >= 1){ //Date.now() is in milliseconds, so convert it all to days, and if it's more than 1 day, show the div
        document.getElementById('div').style.display = 'block'; //Show the div
        localStorage.last = Date.now(); //Reset your timer
    }
}
else {
    localStorage.last = Date.now();
    document.getElementById('div').style.display = 'block'; //Show the div because you haven't ever shown it before.
}

Reference

答案 2 :(得分:1)

这取决于您希望此规则的严格程度。 为了完全准确,您将必须使用数据库来维护向用户显示的用户ID和块时间。 但是,如果它不是一个非常严格的规则,您可以通过存储获得近似结果 在浏览器cookie中的时间,并根据它显示/隐藏div。 Cookie可以在javascript和PHP中读取,无论适合你,都可以显示/隐藏div。

答案 3 :(得分:0)

其他可以使用cookies,您可以使用localStorage存储用户上次访问该页面的时间。