是否有一种简单的方法可以跟踪您网站上的用户使用Javascript(最好是jQuery)访问了多少页面?
我需要在用户访问网站上超过5页后执行一项功能。
我在考虑将window.location.href存储到变量中并检查它是否与下一页匹配。如果不是,我会将其注册为一个页面更改,依此类推。这听起来对我来说听起来很合理,但如果我走错了路,请指导我。
答案 0 :(得分:1)
如果您想在网站上的网页上跟踪用户,最好使用Cookie。虽然你不需要jquery,但有一个很好的jQuery插件可以帮助你管理cookie。 (http://code.google.com/p/cookies/wiki/Documentation)。
使用Cookie,您可以在每个页面上运行JavaScript,以检查是否存在网站Cookie。如果这不存在,您将使用值1创建它。如果它存在,您将增加其值。然后,一旦您看到值为5,您就知道他们访问了5页。
答案 1 :(得分:1)
jQuery没有本机cookie功能。
虽然我完全同意这应该在服务器端完成,但我自己永远不会这样做......你可以完全用普通的Javascript来完成。
我已经整合了一个适合您目的的功能。只有当他们访问了6页,其中每个页面与前一页不同时,它才返回true。
function mySiteTracker() {
var pageCounter = readCookie('pageCounter');
var pageLast = readCookie('pageLast');
var pageInt = 0;
if (pageCounter) {
pageInt = parseInt(pageCounter);
if (pageInt > 5) return true;
if (window.location.href == pageLast) return false;
}
createCookie('pageCounter',(pageInt + 1));
createCookie('pageLast',window.location.href);
return false;
}
//The following 2 functions providing the get/set
//functionality are MODIFIED from: http://www.quirksmode.org/js/cookies.html
function createCookie(name,value) {
document.cookie = name+"="+value+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
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,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
我没有专门测试这个...如果您有任何问题,请告诉我。
答案 2 :(得分:0)
$(document).ready(
function(){
if ($.cookie('userViews')) {
var views = parseInt($.cookie('userViews')) + 1;
}
else {
var views = 1;
}
$.cookie('userViews',views,{expires:30});
if (views > 5) {
// do whatever you want to do after 5 views.
}
}
);
以上代码仅在使用jQuery cookies插件时才有效。
值得做出的事情明显的 - 指出任何基于JavaScript的解决方案都容易受到用户干扰,脚本可以被更改,cookie被操纵等等。如果您要求至少相对安全解决方案 1 ,那么服务器端解决方案(使用您喜欢的任何服务器端脚本语言)可能会更好方法