为JQuery Popup设置Cookies - 虽然设置了cookie,但Popup总是打开

时间:2013-10-18 18:52:19

标签: jquery cookies popup

我正在尝试为我的网站http://www.digitalambiance.co制作一个灯箱弹出窗口,该用户将在首次访问该网站时为用户打开,然后不再打开。我的想法是使用cookie,所以我将jquery.cookie.js脚本添加到我的整个文档中。我可以让cookie注册,但我不能阻止弹出窗口显示。我尝试了很多解决方案,但我对JQuery很新,所以我想我可能会错过一些明显的东西?

这是我的代码:

//Beginning of function for popup
function(){
  if($.cookie('01012013') != '1'){
        $.cookie('01012013', '1', { expires: 7, path: '/' });
        function openOffersDialog() {
            $('#overlay').fadeIn('fast', function() {
                $('.overlayp').css('display','inline');
                $('#boxpopup').css('display','block');
                $('#boxpopup').animate({'left':'30%'},500);
            });
        }


    function closeOffersDialog(prospectElementID) {
        $(function($) {
            $(document).ready(function() {
                $('#' + prospectElementID).css('position','absolute');
                $('#' + prospectElementID).animate({'left':'-100%'}, 500, function() {
                    $('#' + prospectElementID).css('position','fixed');
                    $('#' + prospectElementID).css('left','100%');
                    $('#overlay').fadeOut('fast');
                });
            });
        });
    }

    } //if statement
  else{
        return;
  }  //else statement
} //overall function statement

//end popup section

三江源!

1 个答案:

答案 0 :(得分:0)

我检查了他们在网站上的方式。一些事情:

  • 您粘贴的大多数代码都不可执行,因为您所包含的功能不会被称为
  • 但是,在JS中使用函数name(){}构造声明的函数在全局符号表中始终,并且无论它们是否或任何其他语句都创建它们。

if (false) {
   function x() { }
}
// and 
if (true) {
   function x() { }
}

将创建函数x。

您需要做的是首先通过调用您声明的包装函数使代码可执行,例如:

(function () {
    // code
})();

其次,不要使用onload =“”标签,因为你加载了jQuery,而是执行:

jQuery(document).ready(function () { // When the page loads
    if ($.cookie('01012013') != '1') { // Check for cookie
        $.cookie('01012013', '1', { expires: 7, path: '/' });
        // Now create your close function
        window.closeOffersDialog = function (prospectElementID) {
            $('#' + prospectElementID).css('position','absolute');
            $('#' + prospectElementID).animate({'left':'-100%'}, 500, function() {
                $('#' + prospectElementID).css('position','fixed');
                $('#' + prospectElementID).css('left','100%');
                $('#overlay').fadeOut('fast');
            });
       };
       // and set the timer to open the window
       setTimeout(function () {
           $('#overlay').fadeIn('fast', function() {
               $('.overlayp').css('display','inline');
               $('#boxpopup').css('display','block');
               $('#boxpopup').animate({'left':'30%'},500);
           });
       }, 3000);
    }
});