用户访问3页或更多页时的防火功能

时间:2015-03-31 16:05:19

标签: javascript jquery cookies counter

我试图弄清楚如何跟踪用户通过Cookie访问的页数。我只想计算他们访问的页数,并在第3页显示简报注册表。这是我目前的脚本,它没有任何计数机制:

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires;
}
function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
    }
    return "";
}
var hidePopoverCookie = getCookie("hidePopover");
if (hidePopoverCookie == "") { // && pagesVisited > 2
    setTimeout(function() {
        $("#popOver").show();
    }, 5000);
}
$("#popOver button").click(function() {
    $("#popOver").hide();
    setCookie("hidePopover", true, 365);
})

这就是我试图实现的一个页面计数器:

var pagesVisitedCookie = getCookie("pagesVisited");
if (pagesVisitedCookie === "") {
    console.log ("no pages visited");
    setCookie("pagesVisted", 1, 365);
} else if (pagesVisitedCookie === 1) {
    console.log("2 pages visited");
    setCookie("pagesVisted", 2, 365);
} else if (pagesVisitedCookie > 2) {
    console.log("More than 2 pages visited");
    setCookie("pagesVisted", 3, 365);
}

它会返回&#34;没有访问的页面&#34;无论怎样,我都不确定为什么。我对cookies非常陌生,我确信这样做更清洁,我只是想完成它(这个项目让我疯了)。

2 个答案:

答案 0 :(得分:1)

由于我发现你已经在使用jQuery了,我将使用它来作为包装函数触发而不是DOM loaded事件上的实际逻辑,然后我可以像sessionStorage那样使用:< / p>

$(function(){ // fires once a page's DOM is ready
   var visitsCount = JSON.parse(sessionStorage.getItem('visitsCount'));

   if( visitsCount.legnth < 3 && $.inArray( window.location.href, visitsCount ) == -1 ){
       visitsCount.push(window.location.href);
       sessionStorage.setItem('visitsCount', JSON.stringify(visitsCount));
   }

   if( visitsCount.legnth >= 3 ) // user has viewed 3 different pages
      // do whatever
});

代码将页面的当前网址存储在sessionStorage中,如果该网址已经不在存储的数组中。

答案 1 :(得分:0)

当您正在阅读名为pagesVisted的Cookie时,您正在设置名为pagesVisited的Cookie。