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 对象 ...
随机推荐
- sikuli 如何 清空文本框中的内容??解决方法!
Screen s = new Screen(); s.click("name.png"); s.type("a",KeyModifier.CTRL); s.ty ...
- 在压缩话单中过滤指定IP的一个小脚本
工作需要,需要过滤出含有指定的IP段的话单,编写的脚本名字叫 filter.sh #!/bin/bash TARGET_PATH=/data/flume/flume_exec_log/Dst_for_ ...
- 【Struts2】result类型
Struts2 result类型 1.dispatcher:服务器跳转到页面,通常来处理JSP,默认类型. 2.redirect:重定向到页面. Action: 1 public String red ...
- 【C语言】练习1-21
题目来源:<The C programming language>中的习题 练习1-21:编写程序entab,将空格串替换为最好数量的制表符和空格,但要保持单词之间的间隔不变. 思路: 对 ...
- 【struts2】名为dispatcher的ResultType
1)基本使用 名称为“dispatcher”的ResultType,在struts-default.xml里的配置如下: <result-type name="dispatcher&q ...
- Java代码通过API操作HBase的最佳实践
HBase提供了丰富的API.这使得用Java连接HBase非常方便. 有时候大家会使用HTable table=new HTable(config,tablename);的方式来实例化一个HTabl ...
- 求最大连续和——dp
输入一组整数,求出这组数字子序列和中最大值.也就是仅仅要求出最大子序列的和,不必求出最大的那个序列. 比如: 序列:-2 11 -4 13 -5 -2,则最大子序列和为20. 序列:-6 2 4 -7 ...
- IOS使用AVAudioPlayer播放mp3歌曲文件并监听来电打断
本实例实现了AVAudioPlayer播放mp3歌曲文件,实现了播放.暂停.继续操作,音乐音量控制.播放进度显示,同时监听来电打断事件 一.控件初始化 - (void)viewDidLoad { [s ...
- 【Unity】第9章 粒子系统
分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 粒子是在三维空间中渲染出来的二维图像,主要用于在场景中表现如烟.火.水滴.落叶.--等各种效果. Unity粒子系统 ( ...
- Android4.4r1(KitKat)源码下载地址
未经验证 http://blog.csdn.net/gaojinshan/article/details/14228737 百度云盘保存了大量android源码,没有经过验证,并不能保证能够正常编译, ...