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 学习笔记 错误处理
Jul 30 Javascript
JavaScript初学者需要了解10个小技巧
Aug 25 Javascript
AngularJS基础知识
Dec 21 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
May 19 Javascript
js验证身份证号有效性并提示对应信息
Oct 19 Javascript
探讨JavaScript标签位置的存放与功能有无关系
Jan 15 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
Jun 25 Javascript
jquery表单验证实例仿Toast提示效果
Mar 03 Javascript
JavaScript的六种继承方式(推荐)
Jun 26 Javascript
AngularJS实现进度条功能示例
Jul 05 Javascript
Vuex 使用及简单实例(计数器)
Aug 29 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
Nov 03 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 变量定义方法
2009/06/14 PHP
php 邮件发送问题解决
2014/03/22 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
mysql查找删除重复数据并只保留一条实例详解
2016/09/24 PHP
php版微信数据统计接口用法示例
2016/10/12 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
Laravel5.4简单实现app接口Api Token认证方法
2019/08/29 PHP
jquery $.getJSON()跨域请求
2011/12/21 Javascript
jquery禁用右键示例
2014/04/28 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
js实现仿qq消息的弹出窗效果
2016/01/06 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
jQuery无缝轮播图代码
2016/12/22 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
2020/02/15 Javascript
Django中几种重定向方法
2015/04/28 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
阿联酋网上花店:Ferns N Petals
2018/02/14 全球购物
贝佳斯官方网站:Borghese
2020/05/08 全球购物
博士学位自我鉴定范文
2013/12/26 职场文书
会计专业毕业自荐书范文
2014/02/08 职场文书
作风转变心得体会
2014/09/02 职场文书
2014年党员自我剖析材料
2014/10/07 职场文书
2014年图书室工作总结
2014/12/09 职场文书
天河观后感
2015/06/11 职场文书
2015年高校保卫处工作总结
2015/07/23 职场文书
pytest配置文件pytest.ini的详细使用
2021/04/17 Python
java开发双人五子棋游戏
2022/05/06 Java/Android