2013-10-18 57 views
0

我想为我的网站http://www.digitalambiance.co制作一个lightbox popup弹出窗口,用户首次访问该网站时将不会再打开。我的想法是使用cookie,因此我将jquery.cookie.js脚本添加到了我的整个文档中。我可以让cookie注册,但是我不能停止显示弹出窗口。我已经尝试了很多解决方案,但我对JQuery非常陌生,所以我想我可能会错过明显的东西?为JQuery弹出窗口设置Cookie - 弹出窗口总是打开,虽然设置了Cookie

这里是我的代码:

//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 

三江源!

+0

你确定cookie被设置?检入开发者工具>资源> Cookie(在Chrome中)。你也可以在哪里调用openOffersDialog函数? –

回答

0

我检查了他们的方式,你有它在网站上。有几件事情:

  • 最要粘贴的代码是不可执行的,因为你有它缠在功能不叫
  • 但是功能使用函数名(){声明}构建JS是始终在全局符号表中创建,并且不管周围是否有其他语句,都会创建它们。

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); 
    } 
}); 
+0

这就像一个魅力!谢谢你清楚地解释它。 – SarekasCastle

+0

因此,Cookie在Firefox和Chrome中运行良好,但似乎无法在Safari或IE中使用。有什么建议么? – SarekasCastle

+0

尝试用一个字母开始cookie名称,IE可以像这样疯狂 –