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 相关文章推荐
Firefox和IE浏览器兼容JS脚本写法小结
Jul 07 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
May 06 Javascript
js图片自动切换效果处理代码
May 07 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
Dec 19 Javascript
JavaScript事件委托用法分析
Jan 24 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
Sep 10 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
May 10 Javascript
js防刷新的倒计时代码 js倒计时代码
Sep 06 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
Mar 15 Javascript
jQuery实现参数自定义的文字跑马灯效果
Aug 15 jQuery
Vue 页面状态保持页面间数据传输的一种方法(推荐)
Nov 01 Javascript
vue模块拖拽实现示例代码
Mar 09 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
初学CAKEPHP 基础教程
2009/11/02 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
PHP+Redis开发的书签案例实战详解
2019/07/09 PHP
用js生产批量批处理执行命令
2008/07/28 Javascript
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
2015/09/05 Javascript
编写高性能Javascript代码的N条建议
2015/10/12 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
AngularJS辅助库browserTrigger用法示例
2016/11/03 Javascript
详解JavaScript树结构
2017/01/09 Javascript
angularjs下拉框空白的解决办法
2017/06/20 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
2019/08/23 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
js最全的数组的降维5种办法(小结)
2020/04/28 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
Python版微信红包分配算法
2015/05/04 Python
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
解决python运行启动报错问题
2020/06/01 Python
使用已经得到的keras模型识别自己手写的数字方式
2020/06/29 Python
keras实现VGG16方式(预测一张图片)
2020/07/07 Python
python实现粒子群算法
2020/10/15 Python
css3实现冲击波效果的示例代码
2018/01/11 HTML / CSS
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
店长岗位的工作内容
2013/11/12 职场文书
宣传委员竞选稿
2015/11/19 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
golang 比较浮点数的大小方式
2021/05/02 Golang