1

我在一个网站上有FancyBox,当他们访问时会弹出并在其中包含一些信息。我想添加一些用户可以点击的按钮,它设置了一个 cookie 大约一个月左右不显示消息。

当涉及到这样的事情时,我很无用,所以如果有人能指导我该怎么做,那就太棒了。

这是我到目前为止所拥有的。在底部,我添加了我认为可能是提议的 cookie 的锚(“noShow”),但我不确定它是否会像现在这样工作。在此之前我已经为 FancyBox 加载了所有 jQuery 脚本,之后它也加载了jquery.cookie.js。如果重要的话,我会使用 FancyBox 2 的最新下载。

<script type="text/javascript"> 
function openFancy() { 
setTimeout( function() {$('#autoStart').trigger('click'); },1000);
} 

$(document).ready(function() {
    openFancy();
    $('#autoStart').fancybox();
});
</script>

<!-- This is the popup itself -->
<a id="autoStart" style="display:none" href="#autoFancybox"></a>
 <div style="display: none;">
  <div id="autoFancybox" style="width: 800px">
   <div>
    <!-- My content for the Fancybox is here -->
    <br />
    <p style="font-size:10px" align="right">
    <a id="noShow" href="#noShow">Don't me show this message again</a>
    </p>
   </div>
  </div>
 </div>

谢谢,利亚姆。

4

2 回答 2

6

除了启动 fancybox 的函数之外,还可以创建另一个设置 cookie 的和单击按钮时的 过期时间的函数:

function dontShow(){
 $.fancybox.close(); // optional
 $.cookie('visited', 'yes', { expires: 30 }); // set value='yes' and expiration in 30 days
}

...然后验证cookie并决定是否启动fancybor:

$(document).ready(function() {
    var visited = $.cookie('visited'); // create cookie 'visited' with no value
    if (visited == 'yes') {
        return false;
    } else {
        openFancy(); // cookie has no value so launch fancybox on page load
    }
  $('#autoStart').fancybox(); // bind fancybox to selector
}); // ready

...现在是您的按钮的 html

<a id="noShow" href="javascript:dontShow()">Don't show this message again</a>

查看工作演示

于 2012-12-17T06:02:26.607 回答
0

有一个很棒的用于 cookie 管理的 jQuery 插件,你应该看看 - https://github.com/carhartl/jquery-cookie

当用户访问您的网站时,您可以检查您的 cookie 以查看他们以前是否访问过该网站。如果他们还没有显示您的动画并设置 cookie。如果他们有然后不要运行动画。

从 jquery-cookie 文档一目了然,您可以像这样设置 7 天的 cookie: $.cookie('visited', 'yes', { expires: 7 }); 所以你的代码可能看起来像:

// Make sure DOM has fully loaded before running code
$(function(){
    if( ! $.cookie('visited')){
        // Your code here
    } else {
        $.cookie('visited', 'yes', { expires: 7 });
    }
});
于 2012-12-12T15:53:46.133 回答