FancyBox - “不再显示此消息”按钮?

时间:2012-12-12 14:14:18

标签: javascript jquery html fancybox fancybox-2

我在访问时弹出的网站上有 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>

谢谢, 小连

2 个答案:

答案 0 :(得分: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>

参见 working DEMO

答案 1 :(得分: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 });
    }
});