Управление куки с помощью Javascript - PullRequest
0 голосов
/ 09 марта 2011

Я попытался создать менеджер всплывающих окон, используя 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 Ответ

1 голос
/ 09 марта 2011

Хорошо, так что происходит, вот что:

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 установлено значение 1 и pop для выхода из функции.
  2. Второе посещение, для файла cookie - 1.Ajx.Dialog вызван, cookie установлен на 2, pop функция возвращает false.
  3. Третий визит и cookie - 2.pop функция возвращает false.

Это то, что вы хотели?

ОБНОВЛЕНИЕ:

Я не уверен, что вы хотитеслучиться, но если вы хотите, чтобы всплывающее окно срабатывало один раз при первом посещении, используйте следующее:

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