检查 link 是否在过去一天被点击

Check if a link has been clicked in the past day

我正在尝试使用本地 html 和 Jquery 为自己制作一个简单的个人主页。我添加了一个 link 去 Bing 奖励。

<a id="bing" href="https://www.bing.com/rewards/dashboard">Bing Rewards</a>

但是,我只想每天访问这个网站一次。当我点击它时,我希望它隐藏到第二天。

$('#bing').click(function(){
   $(this).hide();
}

当我关闭并重新打开页面时,我该如何让它知道我上次访问 link 的时间,并基于此显示 link 或不是? 我对这类事情很陌生,所以答案越简单越好。谢谢!

在此方法中,最后一次点击的日期(从午夜开始)存储在本地存储中 (demo)

$(function() {
  var oneDay = 8.64e7, // 24 hours in milliseconds
    lastClicked = localStorage.getItem('bing-time'),
    showLink = new Date().getTime() > lastClicked + oneDay;
  $('#bing').toggle(showLink);
  if (showLink) {
    $('#bing').on('click', function() {
      var date = new Date();
      // set time to midnight
      date.setHours(0,0,0,0);
      localStorage.setItem('bing-time', date);
      $(this).hide();
    });
  }

  // reset localstorage - for demo
  $('button').click(function() {
    localStorage.removeItem('bing-time');
  });
});

您可以将点击时间存储在cookie 中。使用像 js-cookie 这样的库会容易得多。

$('#bing').click(function() {
    $(this).hide();

    // set cookies to expire in 14 days
    Cookies.set('bing-click-time', new Date(), {
        expires : 14
    });
});
var clickTime = Cookies.get('bing-click-time');
if (clickTime != undefined) {
    var cTime = new Date(clickTime);
    var diff = new Date().getTime() - cTime.getTime();
    console.log(clickTime, cTime, cTime.getTime(), diff / (1000 * 60))
    if (diff / (1000 * 60) < 3) {// eg: less than 3 min
        $('#bing').hide();
    }
}

以下将在页面加载时隐藏或显示按钮并在 localStorage 中存储时间。

如果页面要长时间保持打开状态,您需要运行一个间隔计时器来检查日期差异

var lastBing = localStorage.getItem('last_bing'),
    now = new Date(),
    showButton = true;       
if (lastBing) {
    lastBing = new Date(+lastBing);
    showButton = lastBing.setDate(lastBing.getDate() + 1) < now;
}

$('#bing').click(function() {
    localStorage.setItem('last_bing', +new Date());
    $(this).hide();
}).toggle(showButton);