使用localStorage进行页数命中

时间:2016-03-09 19:38:07

标签: javascript

对于我的生活,我无法弄明白这一点,并想知道是否有人可以提供帮助......

我的儿子正在做一些html作业。我们正在尝试设置一个页面计数器,它将计算并显示页面的点击次数。他有一个索引和另外三页。我把它放在每一页上:

<div class="page-count">
  <script type="text/javascript">
      if (localStorage.pagecount)
        {
        localStorage.pagecount=Number(localStorage.pagecount) +1;
        }
    else
      {
        localStorage.pagecount=1;
        }
    document.write("You've had "+ localStorage.pagecount + " hits.");
  </script>
</div>

问题在于它将所有匹配计算在一起而不是每页有多少次点击...我怎样才能计算单页上的点击量而不是总点击数?

提前致谢。

2 个答案:

答案 0 :(得分:2)

localStorage是域范围的,其值在整个网站上共享,而不仅仅是该网站上的一个页面。 localStorage值也仅保留在用户中。浏览器而不是托管您网站的服务器。如果要构建页面计数器,请记住这一点。

如果您使用localStorage来统计,则只会记录特定用户从特定计算机访问该网页的次数。

如果这确实是您正在寻找的功能,您可以通过为每个单独的页面在pagecount对象中提供单独的密钥来使其工作。

类似的东西:

// If this is the first time someone has visited your site, you want 
// to check to see if pagecount has been defined.  If not, define the pagecount object.
!localStorage.pagecount ? localStorage.pagecount = {} : '';

var currentPage = window.location.href;
if(localStorage.pagecount[currentPage]){
    localStorage.pagecount[currentPage] = Number(localStorage.pagecount[currentPage]) + 1;
}
else{
    localStorage.pagecount[currentPage] = 1;
}

以上为您的pagecount对象提供了您网站上存在的每个网页的密钥。

答案 1 :(得分:1)

由于localStorage适用于同一域下的所有网页,因此会计算相同的数字。

如果您想区分它们,可以尝试这样的事情:

var url_segment = window.location.href.split('/');
var script_name = url_segment[url_segment.length - 1];
if (localStorage[script_name]) {
    localStorage[script_name] = parseInt(localStorage[script_name]) + 1;
}
else {
    localStorage[script_name] = 1;
}

document.write("You've had "+ localStorage[script_name] + " hits.");

请注意,我不想将整个路径用作我的密钥,只使用我的脚本名称。你很可能会使用整个路径,我只是觉得这更漂亮。