【问题标题】:FancyBox - "Don't show this message again" button?FancyBox - “不再显示此消息”按钮?
【发布时间】:2012-12-12 14:14:17
【问题描述】:

我在一个网站上有 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>

谢谢, 利亚姆。

【问题讨论】:

标签: javascript jquery html fancybox fancybox-2


【解决方案1】:

除了启动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

【讨论】:

  • 注意$.cookie需要@Ma9ic提到的jQuery插件,它不是原生函数。
  • @pkExec :你是对的。 OP 提到他们在 Ma9nic 的回答之前加载 jquery.cookie.js 脚本。我以为我们知道我们需要 jQuery 插件才能使这个答案起作用(提议的演示实际上也加载了 jQuery cookie 插件)
  • 确实,我完全想念他们。为未来的观众添加了一些格式。
【解决方案2】:

有一个很棒的用于 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 });
    }
});

【讨论】:

  • 您好,感谢您的回复。我很讨厌这种东西。您能否使用我显示的代码向我展示我想要制作的“不再显示此消息”按钮如何工作?很抱歉给您带来任何麻烦。谢谢,利亚姆。
猜你喜欢
  • 2017-09-24
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多