js用img代替ajax js心跳 向服务器定时传送参数 主要计算用户在线时长
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心跳 向服务器定时传送参数 主要计算用户在线时长的更多相关文章
- js计算在线时长
后台传来毫秒,前台转换成对应的时分秒 //在线时长 function longTime(seconds){ //总秒数 //seconds=seconds/1000; //得到小时 var hour ...
- 网页实时聊天之js和jQuery实现ajax长轮询
众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的长时间联系,从而源源不段地获取信息. 一直以来的方式 ...
- JS案例之4——Ajax多图上传
近期项目中有好几次用到多图上传,第一次在项目中真正用到Ajax技术,稍微整理了下,贴个案例出来. 我们传统的做法是当用户提交一个表单时,就向web服务器端发送一个请求.服务器接受并处理传来的表单信息, ...
- [js高手之路]Node.js+jade+mongoose实战todolist(分页,ajax编辑,删除)
该系列文章索引: [js高手之路]node js系列课程-创建简易web服务器与文件读写 [js高手之路]node js系列课程-图解express+supervisor+ejs用法 [js高手之路] ...
- js常见知识点1.ajax相关
一. javascript中的typeof返回哪些数据类型? 建议回复: typeof 运算符把类型信息当作字符串返回.typeof 返回值有六种可能: number, string, boolean ...
- ajax+js数据模板+后台
.net 后台,ajax+js模板引擎的数据填充,制作无刷新分页 js模板用laytpl 待续...
- [转]网页实时聊天之js和jQuery实现ajax长轮询 PHP
网页实时聊天之js和jQuery实现ajax长轮询 众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的 ...
- C#MVC和cropper.js实现剪裁图片ajax上传的弹出层
首先使用cropper.js插件,能够将剪裁后的图片返回为base64编码,后台根据base64编码解析保存图片. jQuery.cropper: 是一款使用简单且功能强大的图片剪裁jquery插件 ...
- Java程序员之JS(一) 之 JQuery.ajax
背景:紧着现在项目的需要,先从JQuery.ajax出发,主要需求是通过 js 调用Java 代码,从而适应现在的项目. 先从几个概念开始讲解: 一. 什么是Deferred Deferred 对象 ...
随机推荐
- 多级菜单系统安装维护shell脚本实现企业级案例
演示效果: 1.一级菜单 2.二级菜单 3.执行操作 脚本参考: #!/bin/bash #author lic(oldboy linux student) #date 1304 DISK_NO=&q ...
- 基于matplotlib的数据可视化(图形填充fill fill_between) - 笔记(二)
区域填充函数有 fill(*args, **kwargs) 和fill_between() 1 绘制填充多边形fill() 1.1 语法结构 fill(*args, **kwargs) args - ...
- 学习笔记之 curl 命令用法详解
[前言] 本文翻译和整理自 Linux-2.6.32 中和 curl 相关的 Manual Page 描述文档. 文档目的仅在提醒读者所遗忘的知识点,故在整理时削弱了阅读流畅性,适用于对 cu ...
- labview中小黑点,小红点
小黑点:在labview中每一个小黑点就代表了一次内存的分配,通过小黑点可以帮助我们分析数据变量的内存拷贝情况
- Android调用系统软键盘
/** * * @MethodName:closeInputMethod * @Description:关闭系统软键盘 * @throws */ public void closeInputMetho ...
- Android Studio主题设置、颜色背景配置
打开http://color-themes.com/有很多样式可供选择 导入方式 下载主题—xxx.jar 注意:如果我们下载下来的jar名字如果有空格,一定要把空格去掉,同时文件路径中不要含有中文 ...
- java类中serialversionuid 作用 是什么?举个例子说明(转)
serialVersionUID适用于Java的序列化机制.简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的字节流中的 ...
- Android Activity标签属性
Android Activity标签属性 Activity 是 Android 系统四大应用组件之一,用户可与 Activity 提供的屏幕进行交互,以执行拨打电话.拍摄照片.发送电子邮件等操作开发者 ...
- java和js实现电话号码部分隐藏
有时候我们不需要将电话号码全部展现在页面上,那么我们可能要对电话号码进行相应的处理,js代码如下: alert("13456789012".replace(/(\d{3})(\d{ ...
- OAuth 2.0介绍
简介 OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 一.应用场景 为了理解OAuth的适用场合,让我举一个假设的例子. 有一个&q ...