使用Javascript管理cookie

时间:2011-03-09 10:51:54

标签: javascript cookies prototype

我尝试使用Javascript创建一个弹出管理器,其想法是只显示一次ajax弹出窗口。出于某种原因,弹出窗口不止一次出现并随机出现。我想知道我的代码是否有问题:

 function SetCookie(name, value, days) {
     var expire = new Date ();
     expire.setTime (expire.getTime() + (24 * 60 * 60 * 1000) * days);
     document.cookie = name + "=" + escape(value) + "; expires=" +expire.toGMTString();
 }
 function GetCookie(name) {
   var startIndex = document.cookie.indexOf(name);
  if (startIndex != -1) {
      var endIndex = document.cookie.indexOf(";", startIndex);
      if (endIndex == -1) endIndex = document.cookie.length;
      return unescape(document.cookie.substring(startIndex+name.length+1, endIndex));
  }
  else {
      return null;
  }
 }

function DeleteCookie(name) {
    var expire = new Date ();
    expire.setTime (expire.getTime() - (24 * 60 * 60 * 1000));
    document.cookie = name + "=; expires=" + expire.toGMTString();
}

 function Pop() {
    var cookie = GetCookie("popup");
    if(cookie==null) {
        SetCookie("popup",1,300);
 }
    else {
        if(cookie==1) {
            new Ajx.Dialog();
            SetCookie("popup",2,300);
            return false;
        }
        else {
            return false;
        }
    }
  }
  window.onload = Pop;

1 个答案:

答案 0 :(得分:1)

好的,发生的事情就是这样:

function Pop() {
    var cookie = GetCookie("popup");
    if(cookie==null) {
        SetCookie("popup",1,300);
    }
    else {
        if(cookie==1) { 
            new Ajx.Dialog();
            SetCookie("popup",2,300);
            return false;
        }
        else {
            return false;
        }
    }
}
  1. 首次访问且cookie为空。 Cookie设置为1pop功能退出。
  2. 第二次访问,Cookie为1。调用Ajx.Dialog,Cookie设置为2pop函数返回false。
  3. 第三次访问,Cookie为2pop函数返回false。
  4. 这是你的意图吗?

    <强>更新

    我不确定你想要发生什么,但如果你想在第一次访问时弹出一次弹出窗口,请使用以下内容:

    function Pop() {
        var cookie = GetCookie("popup");
        if(cookie != 1) {
            new Ajx.Dialog();
            SetCookie("popup", 1, 300);
        }
    }