如果一小时过去,则jquery加载模态

时间:2013-04-02 10:11:59

标签: php jquery twitter-bootstrap time

$(document).ready(function() { 
    $('#bb').modal();
});

我正在加载一个bootstrap模式。但我不想在每次加载时显示模态。它应该像“显示如果在上一次加载后60分钟过去了”。

我无法记录IP地址,因为所有用户都使用相同的IP地址。

我是否可以仅使用jquery执行此操作(它可以像“显示时间是前5分钟的时间”)?

如果不是我的其他选择?

3 个答案:

答案 0 :(得分:4)

您可以设置一个60分钟到期的cookie,并检查cookie是否仍然存在。如果不是,则再次显示您的模态。

有一个很好的jQuery Cookie插件here

如果您没有将cookie的截止日期设置为60分钟或者根本不可能,那么您可以存储cookie在cookie中创建的时间并检查此时间是否> = 60距离您当前的时间。如果是,则显示模态并刷新cookie时间。

答案 1 :(得分:1)

你在javascript中有一个Date()对象。检查代码中的时间。如果它的前5分钟显示模态。否则不显示模态。

var date = new Date();
if(date.getMinutes()<=5)
{
   // display
}
else{
    // Dont display
}

答案 2 :(得分:1)

这应该可以做你想要的,但你可能要考虑重新加载你的内容异步,而不是总是驱逐document.ready()

<!DOCTYPE html>
<html>
<head>
<script>
function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
  {
  x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
  y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
  x=x.replace(/^\s+|\s+$/g,"");
  if (x==c_name)
    {
    return unescape(y);
    }
  }
}

function setCookie(c_name,value,exminutes)
{
var exdate=new Date();
exdate.setMinutes(exdate.getMinutes() + exminutes);
var c_value=escape(value) + ((exminutes==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}

function checkCookie()
{
var lastload=getCookie("lastload");

if (lastload!=null && lastload!="")
  {
    // no need to do anything
  }
else 
  {
    // show / load modal
  }
  setCookie("lastload",1,60);
}
</script>
</head>
<body onload="checkCookie()">
</body>
</html>