0

我正在尝试为我的网站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

谢谢!

4

1 回答 1

0

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

  • 您粘贴的大部分代码都是不可执行的,因为您包裹的函数没有被调用
  • 然而,在 JS 中使用 function name() {} 构造声明的函数总是在全局符号表中创建,并且无论 if 或任何其他语句如何,它们都会被创建。

IE

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);
    }
});
于 2013-10-18T19:17:10.160 回答