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 相关文章推荐
JavaScript动态创建form表单并提交的实现方法
Dec 10 Javascript
JS Array.slice 截取数组的实现方法
Jan 02 Javascript
jQuery EasyUI中DataGird动态生成列的方法
Apr 05 Javascript
Js+Ajax,Get和Post在使用上的区别小结
Jun 08 Javascript
jQuery实现百度登录框的动态切换效果
Apr 21 jQuery
JS实现简易的图片拖拽排序实例代码
Jun 09 Javascript
angularJs 表格添加删除修改查询方法
Feb 27 Javascript
使用Angular CLI进行Build(构建)和Serve详解
Mar 24 Javascript
vue addRoutes实现动态权限路由菜单的示例
May 15 Javascript
VUE 组件转换为微信小程序组件的方法
Nov 06 Javascript
vue created钩子函数与mounted钩子函数的用法区别
Nov 05 Javascript
vant 中van-list的用法说明
Nov 11 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
PHP新手上路(八)
2006/10/09 PHP
PHP使用feof()函数读文件的方法
2014/11/07 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
2015/11/05 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
Yii使用技巧大汇总
2015/12/29 PHP
jquery 问答知识整理
2010/02/11 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
AngularJS中一般函数参数传递用法分析
2016/11/22 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
基于AngularJS的拖拽文件上传的实例代码
2017/07/15 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
2018/05/04 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
2019/07/18 Javascript
python使用nntp读取新闻组内容的方法
2015/05/08 Python
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
python基础教程之五种数据类型详解
2017/01/12 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
PyQt5每天必学之工具提示功能
2018/04/19 Python
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
Python利用matplotlib绘制约数个数统计图示例
2019/11/26 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
python使用配置文件过程详解
2019/12/28 Python
Pedro官网:新加坡时尚品牌
2019/08/27 全球购物
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
外贸业务员工作职责
2014/01/06 职场文书
2014年教师工作总结
2014/11/10 职场文书
学籍证明模板
2014/11/21 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
大学生军训心得体会5篇
2019/08/15 职场文书
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python