2011-02-08 18 views
3

このスクリプトは、そのサイトの新しい訪問者である場合にのみ実行するにはどうすればよいですか?ページが要求されるたびに実行され、非常に迷惑になります。訪問者1人につきjQueryポップアップを一度表示する

//0 means disabled; 1 means enabled; 
var popupStatus = 0; 

function loadPopup(){ 
    //loads popup only if it is disabled 
    if(popupStatus==0){ 
     $("#backgroundPopup").css({ 
      "opacity": "0.7" 
     }); 
     $("#backgroundPopup").fadeIn("slow"); 
     $("#popupContact").fadeIn("slow"); 
     popupStatus = 1; 
    } 
} 

//disabling popup with jQuery magic! 
function disablePopup(){ 
    //disables popup only if it is enabled 
    if(popupStatus==1){ 
     $("#backgroundPopup").fadeOut("slow"); 
     $("#popupContact").fadeOut("slow"); 
     popupStatus = 0; 
    } 
} 

//centering popup 
function centerPopup(){ 
    //request data for centering 
    var windowWidth = document.documentElement.clientWidth; 
    var windowHeight = document.documentElement.clientHeight; 
    var popupHeight = $("#popupContact").height(); 
    var popupWidth = $("#popupContact").width(); 
    //centering 
    $("#popupContact").css({ 
     "position": "absolute", 
     "top": windowHeight/2-popupHeight/2, 
     "left": windowWidth/2-popupWidth/2 
    }); 
    //only need force for IE6 

    $("#backgroundPopup").css({ 
     "height": windowHeight 
    }); 

} 


$(document).ready(function(){ 

    //LOADING POPUP 
    //Click the button event! 
     //centering with css 
     centerPopup(); 
     //load popup 
     loadPopup(); 

    //CLOSING POPUP 
    //Click the x event! 
    $("#popupContactClose").click(function(){ 
     disablePopup(); 
    }); 
    //Click out event! 
    $("#backgroundPopup").click(function(){ 
     disablePopup(); 
    }); 
    //Press Escape event! 
    $(document).keypress(function(e){ 
     if(e.keyCode==27 && popupStatus==1){ 
      disablePopup(); 
     } 
    }); 

}); 

答えて

4

は1または真または任意の値とのセッションの終了時に失効するように設定されたCookieを設定します。次に、クッキーを探します。存在する場合は表示しないでください。

+0

? –

+1

Googleでは読み取り/書き込みクッキー機能を使用しています。そこには100万人の人がいる。私はクッキーを読み書きするためのjqueryプラグインさえあると信じています。しかし、例えば 'getCookie()'や 'setCookie()'と呼ぶことができます。次に、基本的には:if(getCookie( 'cookiename')== false){setCookie( 'cookiename'、 'true'); loadPopup(); }}構文は明らかにあなたがつかむ読み書き機能によって異なりますが、それは一般的な原則です。クッキーが存在しない場合は、あなたのポップアップ関数を呼び出してクッキーを設定します。 –

0

Use cookies純粋にクライアント側の方法が必要な場合。ユーザーがあなたのイントロを見たことを示すフラグを設定します。

何らかの種類の認証を持つサイトの場合、これはサーバーによって処理される可能性があります。

あなたを祝福してください!

1

すでに述べたように、ユーザーが初めてページを見るときにクッキーを作成して、他の訪問時にそのクッキーが存在することを確認する必要があります。

クッキーを作成するJavaScriptは、正確なフォーマットを使用して文字列を設定する必要があるため、簡単ではありません。これは、これらのhelper functions that can be found on Quirksmodeを使用する方が簡単です:

あなたのコード内で次に
function createCookie(name,value,days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     var expires = "; expires="+date.toGMTString(); 
    } 
    else var expires = ""; 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    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,c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 

すべてを行う必要がある:私は、コードのどのような種類を使用する必要があります

if(readCookie("popupShown") == null) { 
    // Create cookie for 30 days 
    createCookie("popupShown", 1, 30); 
    yourPopupFunction(); 
} 
関連する問題