Показывать всплывающее окно jQuery один раз для каждого посетителя - PullRequest
3 голосов
/ 08 февраля 2011

Как мне запустить этот скрипт, только если человек является новым посетителем сайта? Он запускается каждый раз, когда запрашивается страница, что очень раздражает.

//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();
        }
    });

});

Ответы [ 3 ]

4 голосов
/ 08 февраля 2011

установить cookie, срок действия которого истекает в конце сеанса, со значением 1 или true или любым другим Тогда ищи печенье. Если это существует, не показывайте это.

1 голос
/ 05 июля 2013

Как уже говорилось, вам нужно создать cookie-файл, когда пользователь впервые видит страницу, а затем проверить, существует ли этот файл cookie во время других посещений.

JavaScript для создания Cookies не так прост, как мог бы быть, потому что вам нужно установить строку, используя точный формат. Проще использовать эти вспомогательные функции , которые можно найти в 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();
}
0 голосов
/ 08 февраля 2011

Используйте куки , если вы хотите использовать чисто клиентский метод. Установите флаг, говоря, что пользователь уже видел ваше вступление или что-то еще.

В случае сайта с некоторой аутентификацией это может быть обработано сервером.

Благословит вас Бог!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...