javascript精确统计网站访问量实例代码


Posted in Javascript onDecember 19, 2015

网站一般都有访问量统计工具,比较高效实用的工具多种多样,并且非常的精确。实用javascript也可以简单的实现此功能,尽管没有网络上常用的精确,不过的确也实现了一定的功能,下面就是一段代码实例,感兴趣的朋友可以参考一下:

<script type="text/javascript">
/**
* vlstat 浏览器统计脚本
*/
var statIdName = "vlstatId";
var xmlHttp;
/**
* 设置cookieId
*/
function setCookie(c_name, value, expiredays) {
  var exdate = new Date();
  exdate.setDate(exdate.getDate() + expiredays);
  document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString()) + ";path=/;domain=cecb2b.com";
}
/**
* 获取cookieId
*/
function getCookie(c_name) {
  if (document.cookie.length > 0) {
    c_start = document.cookie.indexOf(c_name + "=");
    if (c_start != -1) {
      c_start = c_start + c_name.length + 1;
      c_end = document.cookie.indexOf(";", c_start);
      if (c_end == -1) {
        c_end = document.cookie.length;
      }
      return unescape(document.cookie.substring(c_start, c_end));
    }
  }
  return "";
}
/**
* 获取当前时间戳
*/
function getTimestamp() {
  var timestamp = Date.parse(new Date());
  return timestamp;
}
/**
* 生成statId
*/
function genStatId() {
  var cookieId = getTimestamp();
  cookieId = "vlstat" + "-" + cookieId + "-" + Math.round(Math.random() * 3000000000);
  return cookieId;
}
/**
* 设置StatId
*/
function setStatId() {
  var cookieId = genStatId();
  setCookie(statIdName, cookieId, 365);
}
/**
* 获取StatId
*/
function getStatId() {
  var statId = getCookie(statIdName);
  if (statId != null && statId.length > 0) {
    return statId;
  } else {
    setStatId();
    return getStatId();
  }
}
/**
* 获取UA
*/
function getUA() {
  var ua = navigator.userAgent;
  if (ua.length > 250) {
    ua = ua.substring(0, 250);
  }
  return ua;
}
/**
* 获取浏览器类型
*/
function getBrower() {
  var ua = getUA();
  if (ua.indexOf("Maxthon") != -1) {
    return "Maxthon";
  } else if (ua.indexOf("MSIE") != -1) {
    return "MSIE";
  } else if (ua.indexOf("Firefox") != -1) {
    return "Firefox";
  } else if (ua.indexOf("Chrome") != -1) {
    return "Chrome";
  } else if (ua.indexOf("Opera") != -1) {
    return "Opera";
  } else if (ua.indexOf("Safari") != -1) {
    return "Safari";
  } else {
    return "ot";
  }
}
/**
* 获取浏览器语言
*/
function getBrowerLanguage() {
  var lang = navigator.browserLanguage;
  return lang != null && lang.length > 0 ? lang : "";
}
/**
* 获取操作系统
*/
function getPlatform() {
  return navigator.platform;
}
/**
* 获取页面title
*/
function getPageTitle() {
  return document.title;
}
/**
* 创建一个form
* 
* @return
*/
function createSubmitForm() {
  var frm = document.createElement("form");
  document.body.appendChild(frm);
  frm.method = "POST";
  return frm;
}
/**
* 为form创建一个元素
* 
* @param inputForm
* @param elementName
* @param elementValue
* @return
*/
function createFormElement(frmInput, elementName, elementValue) {
  var element = document.createElement("input");
  element.setAttribute("id", elementName);
  element.setAttribute("name", elementName);
  element.setAttribute("type", "hidden");
  element.setAttribute("value", elementValue);
  frmInput.appendChild(element);
  return element;
}
/**
* 构造XMLHttpRequest对象
* 
* @return
*/
function createXMLHttpRequest() { 
if (window.ActiveXObject) { 
 xmlHttp = new ActiveXObject('Microsoft.XMLHTTP'); 
} else if (window.XMLHttpRequest) { 
 xmlHttp = new XMLHttpRequest(); 
} 
}
/**
* url指定跳转页,data是要post的数据。func类似于函数指针
* 
* @param url
* @param data
* @param func
* @return
*/
function AjaxPost(url, data, func) {
  var httpRequest = createHttpRequest();
  if (httpRequest) {
    httpRequest.open("POST", url, true);
    httpRequest.setRequestHeader("content-length", data.length);
    httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    httpRequest.send(data);
    httpRequest.onreadystatechange = function() {
      if (httpRequest.readyState == 4) {
        try {
          if (httpRequest.status == 200) {
            if (func) {
              // 这里可以调用想要的函数
              func(httpRequest.responseText);
            }
          }
        } catch (e) {
          alert("Error XMLHttpRequest!");
        }
      }
    }
  } else {
    alert("Error initializing XMLHttpRequest!");
  }
}
function vlstatInitLE(vlch, vlch1, vlch2, vlch3) {
  var p;
  var vlstatCH = vlch != null && vlch.length > 0 ? vlch : "";
  var vlstatCH1 = vlch1 != null && vlch1.length > 0 ? vlch1 : "";
  var vlstatCH2 = vlch2 != null && vlch2.length > 0 ? vlch2 : "";
  var vlstatCH3 = vlch3 != null && vlch3.length > 0 ? vlch3 : "";
  var vlstatCookieId = getStatId();
  var vlstatUA = encodeURIComponent(getUA());
  var vlstatIPAddress = document.localName;
  var vlstatREFURL = encodeURIComponent(document.referrer);
  var vlstatURL = encodeURIComponent(document.URL);
  var vlstatScreenX = screen.width;
  var vlstatScreenY = screen.height;
  var vlstatOS = getPlatform();
  var vlstatBrower = getBrower();
  var vlstatBrowerLanguage = getBrowerLanguage();
  var vlstatPageTitle = encodeURIComponent(getPageTitle());
  var vlstatAction = "index.php";
  p = "cookieId=" + vlstatCookieId + "&ua=" + vlstatUA + "&ip=" + vlstatIPAddress + "&refurl="
      + vlstatREFURL + "&url=" + vlstatURL + "&screenX=" + vlstatScreenX + "&screenY=" + vlstatScreenY
      + "&os=" + vlstatOS + "&brower=" + vlstatBrower + "&browerLang=" + vlstatBrowerLanguage
      + "&title=" + vlstatPageTitle + "&ch=" + vlstatCH + "&ch1=" + vlstatCH1 + "&ch2=" + vlstatCH2
      + "&ch3=" + vlstatCH3;
  var urlGo = vlstatAction + "?" + p;
  createXMLHttpRequest();
xmlHttp.open('GET', urlGo);
xmlHttp.send(null);
}
</script>

希望本文所述对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
document.write()及其输出内容的样式、位置控制
Aug 12 Javascript
jquery实现对联广告的方法
Feb 05 Javascript
深入浅析JavaScript中对事件的三种监听方式
Sep 29 Javascript
js实现拖拽效果(构造函数)
Dec 14 Javascript
javascript基于prototype实现类似OOP继承的方法
Dec 16 Javascript
深入理解jquery跨域请求方法
May 18 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
Jun 08 Javascript
浅谈JavaScript for循环 闭包
Jun 22 Javascript
微信小程序(应用号)简单实例应用及实例详解
Sep 26 Javascript
整理一下常见的IE错误
Nov 18 Javascript
基于JavaScript实现带数据验证和复选框的表单提交
Aug 23 Javascript
原生JS实现留言板
Mar 26 Javascript
js实现图片轮播效果
Dec 19 #Javascript
js实现图片上传并正常显示
Dec 19 #Javascript
thinkphp实现无限分类(使用递归)
Dec 19 #Javascript
15个常用的jquery代码片段
Dec 19 #Javascript
js实现滚动条滚动到页面底部继续加载
Dec 19 #Javascript
jQuery对html元素的取值与赋值实例详解
Dec 18 #Javascript
jQuery打字效果实现方法(附demo源码下载)
Dec 18 #Javascript
You might like
不用GD库生成当前时间的PNG格式图象的程序
2006/10/09 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
php页面缓存方法小结
2015/01/10 PHP
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
AngularJs bootstrap详解及示例代码
2016/09/01 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
2017/06/26 jQuery
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
你应该知道的几类npm依赖包管理详解
2017/10/06 Javascript
使用JavaScript生成罗马字符的实例代码
2018/06/08 Javascript
jQuery pjax 应用简单示例
2018/09/20 jQuery
详解js根据百度地图提供经纬度计算两点距离
2019/05/13 Javascript
vue实现前台列表数据过滤搜索、分页效果
2019/05/28 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
2019/09/19 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
win7 下搭建sublime的python开发环境的配置方法
2014/06/18 Python
Python随机生成彩票号码的方法
2015/03/05 Python
Python自动连接ssh的方法
2015/03/07 Python
Python实现的异步代理爬虫及代理池
2017/03/17 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
在keras中实现查看其训练loss值
2020/06/16 Python
python缩进长度是否统一
2020/08/02 Python
利用CSS3实现的文字定时向上滚动
2016/08/29 HTML / CSS
医药工作岗位求职信分享
2013/12/31 职场文书
区优秀教师事迹材料
2014/02/10 职场文书
学习教师法的心得体会
2014/09/03 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
javascript数组includes、reduce的基本使用
2021/07/02 Javascript
使用pd.merge表连接出现多余行的问题解决
2022/06/16 Python