【问题标题】:Advent Calendar - Use cookies to stop user opening "calendar door" twice出现日历 - 使用 cookie 来阻止用户打开“日历门”两次
【发布时间】:2015-10-23 07:16:46
【问题描述】:

这个问题可能需要一些解释,所以将解释我的项目:

我正在制作一个圣诞节降临日历,用户可以从中打开隐藏在门后面的链接,该链接使用 CSS 动画在悬停时打开。

只有当元素有一个 .activeAdv 类时,动画才会启动,而该类只有在元素包含内容时才会添加。此功能由 Wordpress 预定帖子控制(12 月的每一天)

我的问题是关于我将如何使用 cookie 来阻止回头用户打开同一扇门两次

一旦他们点击了框中的链接,就应该设置一个 cookie,以便在加载时自动打开门并删除其中的任何内容。

到目前为止,我有一个 codepen 功能演示,还包括我有一些经验的 cookie.js。

http://codepen.io/Jambob/pen/wKyoRr

下面是一个盒子的sn-p代码:

<article>
  <div id="on-1" class="box">
    <h2>1 dec</h2>
  </div>
  <div class="present">
    sample content
    <a href=" www.google.com"> www.google.com</a>
  </div>
</article>

<script>
$(document).ready(function(){

   $(".present").filter(function(){
    return $(this).html().trim().length > 0;
    }).parent().addClass('activeAdv');

});
</script>

我确实希望这个问题在提问中很清楚,我知道如何设置 cookie 以及如何检测它们,我的问题实际上是关于解决这个问题的逻辑。任何帮助将不胜感激,我相信圣诞老人会感到自豪......

【问题讨论】:

  • 他们仍然可以打开不包含 cookie 的其他浏览器(IE、FF、Chrome、Opera 等)。
  • 这真的是为了外观,如果有人使用不同的浏览器/清除缓存,他们确实能够重新打开所有以前的门。您能否建议使用 cookie 以外的其他方法?

标签: jquery cookies


【解决方案1】:

基本上,如果您有链接并且没有设置 cookie,则您希望显示该链接。每次用户看到一个链接时,都应该设置 cookie。在页面被导航离开之前,用户可以看到 cookie。

$(".present").filter(function(){
    var $present = $(this);
    var $link = $present.find('a');
    var haveLink = $link.length > 0;
    // no link means no op
    if (!haveLink) {
        return false;
    }
    // create a unique name per link
    var cookieName = "link-" + $link.attr('href').trim();
    // see if we have a cookie by that name
    var haveCookie = $.cookie(cookieName);
    // set the cookie because this page load is the last time they can see it
    // if we don't have a cookie we can show the link
    var showLink = !haveCookie;
    // alway set the cookie so we don't show
    $.cookie(cookieName, true);
    return showLink;
 }).parent().addClass('activeAdv');

here is the fiddle

【讨论】:

  • var cookieName = "link-" + $link.attr('href').trim();看起来像这里的关键,我按照这些思路思考,用户最终会在日历的 25 天内得到 25 个 cookie,对吗?
  • 是的,您也可以创建一个 cookie 并存储一个包含所有日期的 json 对象并进行搜索,或者您可以为链接提供唯一 ID 并存储它们。无论如何,您需要一种方法来区分 cookie 中的链接。
  • 我在本地主机上试了一下,确实设置了一个链接 http%3A%2F%2Fwww.google.com 的 cookie,但门仍然打开
猜你喜欢
  • 2019-08-31
  • 1970-01-01
  • 2011-09-25
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多