2011-03-09 2 views
0

JavaScriptを使用してポップアップマネージャを作成しようとしましたが、アイディアはajaxポップアップを1回だけ表示することです。なんらかの理由で、ポップアップが2回以上ランダムに表示されます。だから何が起こっていることはこれです、Javascriptでクッキーを管理する

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; 
+2

あなたは 'SetCookie'関数を定義していないようです。 – johnhunter

+0

更新されたコードありがとうございました:) – johnhunter

答えて

1

OK::

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. 最初の訪問とクッキーがnullである私は私のコードに問題があるかどうかを知りたいです。 Cookieは、機能終了として1popに設定されています。
  2. 2回目の訪問とCookieは1です。 Ajx.Dialogが呼び出され、クッキーは2に設定され、pop関数はfalseを返します。
  3. 3回目の訪問とCookieは2です。 pop関数はfalseを返します。

これはあなたが意図したものですか?

UPDATE:

私はあなたが起こるしたいのかわからないんだけど、あなたはポップアップが最初の訪問で一度起動するようにしたい場合は、次を使用します。コードに基づいて

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

ありがとうございました。私の考えは、2番目のページビュー – Roch

+0

でのみポップアップを表示することです。あなたの 'pop'関数がFirefox 3.6で期待どおりに機能していて、他のブラウザではうまくいかない理由は見当たりませんでした。 – johnhunter

関連する問題