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 相关文章推荐
自适应图片大小的弹出窗口
Jul 27 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
Jul 02 Javascript
js实现正方形颜色从下往上升的效果
Aug 04 Javascript
node.js中的fs.lstatSync方法使用说明
Dec 16 Javascript
基于jquery实现日历签到功能
Sep 11 Javascript
Reactjs实现通用分页组件的实例代码
Jan 19 Javascript
使用Vue 实现滑动验证码功能
Jun 27 Javascript
layui的数据表格+springmvc实现搜索功能的例子
Sep 28 Javascript
vue input标签通用指令校验的实现
Nov 05 Javascript
原生js实现日历效果
Mar 02 Javascript
js实现表单项的全选、反选及删除操作示例
Jun 05 Javascript
JS不要再到处使用绝对等于运算符了
Apr 30 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
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
Yii1.1中通过Sql查询进行的分页操作方法
2017/03/16 PHP
Ajax+PHP实现的删除数据功能示例
2019/02/12 PHP
破除一些网站复制、右键限制
2006/11/04 Javascript
一个小型js框架myJSFrame附API使用帮助
2008/06/28 Javascript
javascript在事件监听方面的兼容性小结
2010/04/07 Javascript
js日历功能对象
2012/01/12 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
Vue中的Vux配置指南
2017/12/08 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
2019/04/16 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
[40:55]Liquid vs LGD 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python实现的读取网页并分词功能示例
2019/10/29 Python
python opencv实现gif图片分解的示例代码
2019/12/13 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
Python 里最强的地图绘制神器
2021/03/01 Python
2013年学期结束动员演讲稿
2014/01/07 职场文书
超市采购员岗位职责
2014/02/01 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
求职信标题怎么写
2014/05/26 职场文书
领导班子专题民主生活会情况想汇报
2014/09/30 职场文书
家长通知书家长意见
2015/06/03 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
升学宴来宾致辞
2015/07/27 职场文书
《浅水洼里的小鱼》教学反思
2016/02/16 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS