javascript cookies,创建和删除

时间:2015-07-27 14:22:03

标签: javascript cookies page-refresh

我正在处理每5分钟刷新一次的页面

<meta http-equiv="refresh" content="1200;url=?meta_refresh=true" />

页面上是一个JS脚本,应该在页面重新加载的前两次运行。当页面第三次重新加载时,脚本不应该执行。

到目前为止,我已经创建了一个cookie并给它一个初始值为0,每次刷新我都会增加它的值(重写cookie),如果值小于3,我执行脚本的一部分。问题是如果我关闭选项卡并在另一个选项卡中重新打开页面,cookie会增加值,我希望它始终从0开始。

这是我到目前为止所做的事情:

&#13;
&#13;
var value = 0;
$(document).ready(function() {

  function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
      var c = ca[i];
      while (c.charAt(0)==' ') c = c.substring(1);
      if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
    }
    return "";
  }

  function checkCookie() {
    var cookieValue = getCookie('siteRefreshCookie');
    if (cookieValue !== '') {
      var newValue = parseInt(getCookie('siteRefreshCookie')) + 1;
      if (newValue < 3) {
        //script to be executed
        document.cookie = "siteRefreshCookie="+ newValue +";";
      }
    } else {             
      document.cookie = "siteRefreshCookie="+ value +";";
    }
  }
  checkCookie();
})
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

我可以建议使用查询字符串吗?

<meta http-equiv="refresh" content="1200;url=?meta_refresh=true&count=1" />

然后作为ASP程序员,我会做类似的事情:

<meta http-equiv="refresh" content="1200;url=?meta_refresh=true&count=<%=CInt(0 & Request.Querystring("count")) + 1%>" />

但你可以使用PHP实现这一点,甚至可以用JS来设想你是否有适合的后端语言。

使用Cookie的问题在于它们与该网站相关联,而不是与该窗口相关联。即使您使用像Pete建议的卸载功能重置cookie,您也会遇到问题,例如,如果您有两个标签打开同一页面。