html:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>记录用户的在线时长</title>
</head>

<body>
</body>
</html>
<script type="text/javascript">
 var Statistics_Website_logo ={
                          'Website_logo_title':'学而思',
                          'Website_logo_Theme':'教育行业',
                          'Website_logo_Company':'好未来'
      };
</script>
<script type="text/javascript" src="js/OnlineTime.js"></script>

OnlineTime.js:

/***
****2015.1.4 img代替ajax心跳 主要计算用户在线时长****
***/

var xue = xue || {};
xue.statistics = xue.statistics || {};
xue.statistics.TimerFunction = null;//定时器函数
xue.statistics.RefreshTime = 5000;//定时器刷新时间
xue.statistics.Domain = document.domain;//域名
xue.statistics.URL = window.location.href;//URL
xue.statistics.Title = document.title;//页面标题
xue.statistics.Resolution = (window.screen.height)+'&&'+(window.screen.width);//分辨率
xue.statistics.ColorDepth = window.screen.colorDepth;//颜色深度
xue.statistics.Referrer = document.referrer;//Referrer
xue.statistics.ClientLanguage = navigator.language;//客户端语言
xue.statistics.AppName = navigator.appName;//客户端浏览器名称
xue.statistics.AppVersion = navigator.appVersion;//客户端浏览器版本号
xue.statistics.Timestamp = new Date().getTime();//页面刷新时间戳
xue.statistics.RefreshTimes = 0;//定时器响应的次数

xue.statistics.ImgAjax = document.createElement("img");
xue.statistics.ImgAjax.id="ImgOnlineTime";
xue.statistics.ImgAjax.style.width = "0";
xue.statistics.ImgAjax.style.height = "0";
document.body.appendChild(xue.statistics.ImgAjax);
/****
***设置cookie和获取cookie***
***/
xue.statistics.getsec = function(str){
    var str1=str.substring(1,str.length)*1;
    var str2=str.substring(0,1);
    if (str2=="s"){
        return str1*1000;
   }else if (str2=="h"){
       return str1*60*60*1000;
   }else if (str2=="d"){
       return str1*24*60*60*1000;
   }
}

xue.statistics.setCookie = function (name,value,time){
    var strsec = this.getsec(time);
    var exp = new Date();
    exp.setTime(exp.getTime() + strsec*1);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString()+";path=/;domain=.xueersi.com";
}

xue.statistics.getCookie = function(name){
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
 
    if(arr=document.cookie.match(reg))
 
        return (arr[2]);
    else
        return null;
}
xue.statistics.randomNum = function(randomNum){
    this.Random="";
    for(var i=0;i<randomNum;i++)
    this.Random+=Math.floor(Math.random()*10);
    return this.Random;
}
//用户自定义的网站标识
xue.statistics.Websitelogo = '';
var Statistics_Website_logo;

try{
    for (var Key in Statistics_Website_logo){
           xue.statistics.Websitelogo =xue.statistics.Websitelogo+'&'+''+Key+'='+Statistics_Website_logo[Key]+'';
        }
}catch(e){
    xue.statistics.Websitelogo = '';
}
/****
***统计页面函数***
***/
xue.statistics.AjaxOnlineTime = function () {
    
    this.RefreshTimes++;
    this.Random = this.randomNum(5) + this.Timestamp;
    
    this.setCookie("xue_stat",this.Random,"d1000000000000000");//设置客户标识
    this.Visitorslogo = this.getCookie('xue_stat');
    
   this.Data = 'http://xeslog.xesv5.com/?Domain='+this.Domain+'&URL='+this.URL+'&Title='+this.Title+'&Resolution='+this.Resolution+'&ColorDepth='+this.ColorDepth+'&Referrer='+this.Referrer+'&ClientLanguage='+this.ClientLanguage+'&AppName='+this.AppName+'&AppVersion='+this.AppVersion+'&Timestamp='+this.Timestamp+'&xue_stat='+this.Visitorslogo+''+this.Websitelogo+'';

document.getElementById('ImgOnlineTime').src = this.Data;
 
};

window.onload = function(){
 
   // if(navigator.userAgent.indexOf('WebKit')>0){
       xue.statistics.TimerFunction = window.setInterval("xue.statistics.AjaxOnlineTime()", xue.statistics.RefreshTime);//定时器每5s刷新一次
    //}
    
    
    window.onblur=function(){
        window.clearInterval(xue.statistics.TimerFunction);
        window.onfocus=function(){
        //window.clearInterval(xue.statistics.TimerFunction);
        xue.statistics.TimerFunction = window.setInterval("xue.statistics.AjaxOnlineTime()", xue.statistics.RefreshTime);//定时器每5s刷新一次
      };
    };
};

js用img代替ajax js心跳 向服务器定时传送参数 主要计算用户在线时长的更多相关文章

  1. js计算在线时长

    后台传来毫秒,前台转换成对应的时分秒 //在线时长 function longTime(seconds){ //总秒数 //seconds=seconds/1000; //得到小时 var hour ...

  2. 网页实时聊天之js和jQuery实现ajax长轮询

    众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的长时间联系,从而源源不段地获取信息. 一直以来的方式 ...

  3. JS案例之4——Ajax多图上传

    近期项目中有好几次用到多图上传,第一次在项目中真正用到Ajax技术,稍微整理了下,贴个案例出来. 我们传统的做法是当用户提交一个表单时,就向web服务器端发送一个请求.服务器接受并处理传来的表单信息, ...

  4. [js高手之路]Node.js+jade+mongoose实战todolist(分页,ajax编辑,删除)

    该系列文章索引: [js高手之路]node js系列课程-创建简易web服务器与文件读写 [js高手之路]node js系列课程-图解express+supervisor+ejs用法 [js高手之路] ...

  5. js常见知识点1.ajax相关

    一. javascript中的typeof返回哪些数据类型? 建议回复: typeof 运算符把类型信息当作字符串返回.typeof 返回值有六种可能: number, string, boolean ...

  6. ajax+js数据模板+后台

    .net 后台,ajax+js模板引擎的数据填充,制作无刷新分页 js模板用laytpl 待续...

  7. [转]网页实时聊天之js和jQuery实现ajax长轮询 PHP

    网页实时聊天之js和jQuery实现ajax长轮询 众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的 ...

  8. C#MVC和cropper.js实现剪裁图片ajax上传的弹出层

     首先使用cropper.js插件,能够将剪裁后的图片返回为base64编码,后台根据base64编码解析保存图片. jQuery.cropper: 是一款使用简单且功能强大的图片剪裁jquery插件 ...

  9. Java程序员之JS(一) 之 JQuery.ajax

    背景:紧着现在项目的需要,先从JQuery.ajax出发,主要需求是通过 js 调用Java 代码,从而适应现在的项目. 先从几个概念开始讲解: 一. 什么是Deferred  Deferred 对象 ...

随机推荐

  1. Linux修改终端提示符

    打开~/.bashrc可以看到命令提示的内容为:\u@\h\w\$ \u表示用户名,\h表示主机名,\w表示当前目录,\$表示命令提示符(普通用户$,超级用户#) 这个命令提示符有点长,很碍事,\u@ ...

  2. apache安装mod_ssl.so 出现 undefined symbol: ssl_cmd_SSLPassPhraseDialog错误解决

    很久很久以前,安装Apache的时候,根本没想过将来的某一天会使用到ssl,所以也就没有安装那个模块,结果今天需要用到的时候,却无从下手了. 由于在安装Apache的时候,mod_ssl.so这个文件 ...

  3. HDU 3820 Golden Eggs (SAP | Dinic)

    Golden Eggs Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. HDU 1896 Stones (优先队列)

    Stones Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Subm ...

  5. magento登陆

    magento判断用户登录 Magento 登陆之后返回登录之前的页面 magento 在登陆后一般会自动跳转到 My Account 页面 但是经常会有需求 就是登陆自动跳转到 之前的页面里面 工具 ...

  6. 指尖下的js —— 多触式web前端开发之三:处理复杂手势(转)

    这篇文章着重介绍多触式设备上特有的gesture event(android和iOS对这个事件的封装大同小异).这个事件是对touch event的更高层的封装,和touch一样,它同样包括gestu ...

  7. 【Algorithm】快速排序(续)

    前面在常用的排序算法中,已经写过一篇关于快速排序算法的博客,但是最近看到<The C Programming Language>这本书中的快速排序算法写的不错,所以就拿过来分享一下,下面我 ...

  8. oracle三大范式(转载)

    标准化表示从你的数据存储中移去数据冗余 (redundancy)的过程.如果数据库设计达到了完全的标准化,则把所有的表通过关键字连接在一起时,不会出现任何数据的复本 (repetition).标准化的 ...

  9. sqlserver 在尝试加载程序集 ID 65537 时 Microsoft .NET Framework 出错.服务器可能资源不足

    报错信息: 处理报表时出错. 对数据集“query”执行查询失败. 在尝试加载程序集 ID 65536 时 Microsoft .NET Framework 出错.服务器可能资源不足,或者不信任该程序 ...

  10. RHEL7 禁用gnome-inital-setup

    每次登陆系统后,都会跳出页面gnome-inital-setup 如果觉得讨厌,可以禁止该页面的出现: mkdir ~/.config echo "yes" >> ~/ ...