0

亲爱的社区,我请求您的帮助,这里有一个拐杖,奇怪的是没有出现带有内容的模态窗口,可能超出了框架的范围,在本地它可以工作。问题是,如果用户有厨师,如何使我的窗口不会出现。我不知道如何添加 if(){}。似乎一切都做对了。然而,在添加条件后,在火袋中出现输入错误:Uncaught ReferenceError: getCookieValue is not defined

但是这种设计不起作用(在体内的位置):

<script type="text/javascript">
    $(document).ready(function() {
        var getCookieValue = $.cookie("visit");
        if (getCookieValue == true) {
            $("a.gallery2").fancybox(
                {                       
                    "padding" : 20, 
                    "imageScale" : false, 
                    "zoomOpacity" : false,  
                    "zoomSpeedIn" : 1000,   
                    "zoomSpeedOut" : 1000,  
                    "zoomSpeedChange" : 1000,
                    "frameWidth" : 700,
                    "frameHeight" : 600, 
                    "overlayShow" : true,
                    "overlayOpacity" : 0.8, 
                    "hideOnContentClick" :false,        
                    "centerOnScroll" : false                
            }).click();
        }
    });

</script>
4

3 回答 3

1

如果变量未定义,脚本将无法以这种方式编写。

尝试这个:

<script type="text/javascript">
    $(document).ready(function() {
        var window.getCookieValue = $.cookie("visit");
        if (window.getCookieValue == true) {
            $("a.gallery2").fancybox(
                {                       
                    "padding" : 20, 
                    "imageScale" : false, 
                    "zoomOpacity" : false,  
                    "zoomSpeedIn" : 1000,   
                    "zoomSpeedOut" : 1000,  
                    "zoomSpeedChange" : 1000,
                    "frameWidth" : 700,
                    "frameHeight" : 600, 
                    "overlayShow" : true,
                    "overlayOpacity" : 0.8, 
                    "hideOnContentClick" :false,        
                    "centerOnScroll" : false                
            }).click();
        }
    });

</script>
于 2012-12-12T07:00:32.303 回答
1

我不清楚您是否只想在 cookie 存在时才显示 fancybox true。假设仅当 cookie 值为 时才应显示 fancybox true,然后试试这个

<script type="text/javascript">
$(document).ready(function() {
  // create cookie "visit"
  var getCookieValue = $.cookie("visit");
  // check if cookie value = true
  if (getCookieValue == "true") {
       $("a.gallery2").trigger("click");
  }
  $.cookie("visit", "true", { expires: 7 }); // set the number of days for cookie
  $("a.gallery2").fancybox({                       
     // API options here
  }); // bind fancybox
});
</script>

在这种情况下,fancybox 不会在第一次访问期间显示,但总是在 cookie 有效的第二次访问之后显示。

另一方面,如果fancybox应该只在第一次访问时显示,那么试试:

<script type="text/javascript">
$(document).ready(function() {
  // create cookie "visit"
  var getCookieValue = $.cookie("visit");
  // check if cookie value = true
  if (getCookieValue == "true") {
      return false
  } else {
      $("a.gallery2").trigger("click");
  }
  $.cookie("visit:, "true", { expires: 7 }); // set the number of days for cookie
  $("a.gallery2").fancybox({                       
     // API options here
  }); // bind fancybox
});
</script>

在这两个示例中,都假设您在代码中的某处有此 html:

<a class="gallery2" href="path/target"></a>
于 2012-12-12T08:19:09.887 回答
0

同事!找到了解决方案:

事实证明,不能与变量getCookieValue进行比较,因为该变量不是global,而是一旦读取条件中的cookie并与条件的值进行比较。

这是解决方案:

$(document).ready(function() {

    $("a.gallery2").fancybox( {
        "padding" : 20, 
        "imageScale" : false,
        "zoomOpacity" : false,
        "zoomSpeedIn" : 1000,
        "zoomSpeedOut" : 1000,
        "zoomSpeedChange" : 1000,
        "frameWidth" : 700,
        "frameHeight" : 600,
        "overlayShow" : true,
        "overlayOpacity" : 0.8,
        "hideOnContentClick" :false,
        "centerOnScroll" : false
    });

if ($.cookie("visit") == "true") {
    $("a.gallery2").fancybox().click();
}

});
于 2012-12-12T08:12:21.970 回答