Javascript 如何捕获用户与网站的交互?

Javascript 如何捕获用户与网站的交互?,javascript,ajax,seo,Javascript,Ajax,Seo,如何捕获网站上的用户交互?用户已单击的链接数。用户来自何处。我想创造我自己的逻辑。我不想使用任何统计工具。我怎样才能做到这一点 提前感谢从web服务器日志文件开始,深入了解其格式,尝试一些简单的统计数据。然后,您可能需要通读统计工具(如awstats)的代码,以增强您在这方面的视野。您可以通过referer(document.referer)获得用户的来源地。 如果您有某种会话或标记用户(通过cookies),则可以通过捕获onclick事件来检查单击了哪些链接。但不要点击每个链接,只使用事件捕

如何捕获网站上的用户交互?用户已单击的链接数。用户来自何处。我想创造我自己的逻辑。我不想使用任何统计工具。我怎样才能做到这一点


提前感谢

从web服务器日志文件开始,深入了解其格式,尝试一些简单的统计数据。然后,您可能需要通读统计工具(如awstats)的代码,以增强您在这方面的视野。

您可以通过referer(document.referer)获得用户的来源地。
如果您有某种会话或标记用户(通过cookies),则可以通过捕获onclick事件来检查单击了哪些链接。但不要点击每个链接,只使用事件捕获技术。在jQuery中,这将是:

$('a') 
    .livequery('click', function(event) { 
        alert('clicked'); 
        return false; 
    }); 

如果您想捕获当链接消失时单击的链接,您应该放置onunload事件,该事件将向您的服务器发送有关单击链接的数据

我是一名asp.net开发人员。但我认为这种技术会一直有效。如果您想知道用户从哪里来到您的站点,您可以使用某种跟踪查询字符串变量www.mysite.com?IMFrom=something。所以当你在第三方网站上发布你的链接时,比如说谷歌。发布链接为www.mysite.com?google=traficfromgoogle。你可能有来自其他网站的交通费。对于每个查询字符串,都有不同的querystring变量。您还可以为所有发送trafic给您的网站使用某种唯一id。现在创建跟踪函数,该函数将跟踪此querystring变量。在每次请求期间调用此函数的位置使用此函数。
现在,您可以为每个具有此类查询字符串的请求设置一些自定义逻辑。

我认为您不需要捕获此信息,因为它很可能已经由web服务器本身在web服务器日志中捕获。您只需要找到可以分析日志的软件,并为您提供一些好的指标。这方面有很多软件包。

我知道这并不是在创建自己的逻辑,但如果您决定不想解析服务器日志,您可以尝试一种新的服务,该服务正在尝试升级google analytics:。这是实时分析,他们有一个免费的有限帐户,所以你可以在升级前试用


我还没有尝试过他们的api,但是我想你可以让他们从你的网站上收集数据,然后在你把数据拿回来后用它做一些有趣的事情

我知道有两种方法:

  • 创建一个服务,并对每个要跟踪的事件使用GET方法调用它。
    这是这样的:

    service.php?event=pageview&time=127862936&userId=70&registered=true
    
    window.onbeforeunload = function(){
       sendStats({event:'onbeforeunload'});
    }
    
    function sendStats(statsJSON){
        var url = [];
        for (var key in statsJSON) {
            // make sure that the key is an actual property of an object, and doesn't come from the prototype
            if( statsJSON.hasOwnProperty(key) ){  
                var sign = (!url[0]) ? '?' : '&';
                url.push(sign);
                url.push(key + '=');
                url.push( encodeURI(statsJSON[key]) );
            }
        }
        var time = new Date().getTime();
        url.push('&time=');
        url.push(time);
    
        var stat = new Image();
        stat.src = clientHost + 'stats.gif' + url.join('');
    }
    
    这样,您的服务可以处理数据

  • 我知道的第二种方法是调用服务器上的某个虚拟映像,将GET查询链接到它,然后在服务器端分析对映像的请求。每个请求都被任意化并记录,然后我生成报告

  • 同样,您需要知道要捕获哪些事件,它们是预定义的,并且需要在发生时捕获并发送它们。客户端可以放置一个单脚本js文件,但该脚本需要添加事件侦听器。假设您想知道用户何时退出页面。将事件侦听器添加到onbeforeunload事件,如下所示:

    service.php?event=pageview&time=127862936&userId=70&registered=true
    
    window.onbeforeunload = function(){
       sendStats({event:'onbeforeunload'});
    }
    
    function sendStats(statsJSON){
        var url = [];
        for (var key in statsJSON) {
            // make sure that the key is an actual property of an object, and doesn't come from the prototype
            if( statsJSON.hasOwnProperty(key) ){  
                var sign = (!url[0]) ? '?' : '&';
                url.push(sign);
                url.push(key + '=');
                url.push( encodeURI(statsJSON[key]) );
            }
        }
        var time = new Date().getTime();
        url.push('&time=');
        url.push(time);
    
        var stat = new Image();
        stat.src = clientHost + 'stats.gif' + url.join('');
    }
    
    然后sendStats函数分解JSON并构建一个要发送到服务器的查询,如下所示:

    service.php?event=pageview&time=127862936&userId=70&registered=true
    
    window.onbeforeunload = function(){
       sendStats({event:'onbeforeunload'});
    }
    
    function sendStats(statsJSON){
        var url = [];
        for (var key in statsJSON) {
            // make sure that the key is an actual property of an object, and doesn't come from the prototype
            if( statsJSON.hasOwnProperty(key) ){  
                var sign = (!url[0]) ? '?' : '&';
                url.push(sign);
                url.push(key + '=');
                url.push( encodeURI(statsJSON[key]) );
            }
        }
        var time = new Date().getTime();
        url.push('&time=');
        url.push(time);
    
        var stat = new Image();
        stat.src = clientHost + 'stats.gif' + url.join('');
    }
    

    使用谷歌分析并使用API连接站点元素

    录制并重播web

    这有助于: -在浏览器中记录用户交互/事件
    -只有在出现错误时才将录制发送到后端

    链接和onunload上的实时事件可能不会给您足够的时间在加载新页面之前跟踪/记录服务器上某个持久位置的数据。