javascript实现的网站访问量统计代码

 更新时间:2015年12月21日 10:01  点击:2015

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

废话不多说了,直接给大家贴js代码了。


<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>

下面在给大家分享一段代码实例-JS 精确统计网站访问量程序

/** 
 * 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); 
}

[!--infotagslink--]

相关文章

  • JavaScript判断浏览器及其版本信息

    本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
  • js实现浏览器打印功能的示例代码

    这篇文章主要介绍了js如何实现浏览器打印功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-15
  • 利用JS实现点击按钮后图片自动切换的简单方法

    下面小编就为大家带来一篇利用JS实现点击按钮后图片自动切换的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-25
  • Nest.js参数校验和自定义返回数据格式详解

    这篇文章主要给大家介绍了关于Nest.js参数校验和自定义返回数据格式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-28
  • 详解前端安全之JavaScript防http劫持与XSS

    作为前端,一直以来都知道HTTP劫持与XSS跨站脚本、CSRF跨站请求伪造。防御这些劫持最好的方法是从后端入手,前端能做的太少。而且由于源码的暴露,攻击者很容易绕过防御手段。但这不代表我们去了解这块的相关知识是没意义的,本文的许多方法,用在其他方面也是大有作用。...2021-05-24
  • js+css实现回到顶部按钮(back to top)

    这篇文章主要为大家详细介绍了js+css实现回到顶部按钮back to top回到顶部按钮,感兴趣的小伙伴们可以参考一下...2016-03-03
  • JavaScript仿支付宝密码输入框

    那么今天我就用JavaScript代码来实现这个效果吧,那么首先介绍一下整个的思路,首先我们先将确定输入密码的位数,我的需求是5位,那么就用一个div标签包住5个input标签...2016-01-02
  • js实现上传图片及时预览

    这篇文章主要为大家详细介绍了js实现上传图片及时预览的相关资料,具有一定的参考价值,感兴趣的朋友可以参考一下...2016-05-09
  • js实现调用网络摄像头及常见错误处理

    这篇文章主要介绍了js实现调用网络摄像头及常见错误处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-07
  • JS实现随机生成验证码

    这篇文章主要为大家详细介绍了JS实现随机生成验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-06
  • 一个关于JS正则匹配的踩坑记录

    这篇文章主要给大家介绍了一个关于JS正则匹配的踩坑记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-13
  • js组件SlotMachine实现图片切换效果制作抽奖系统

    这篇文章主要介绍了js组件SlotMachine实现图片切换效果制作抽奖系统的相关资料,需要的朋友可以参考下...2016-04-19
  • vue.js 表格分页ajax 异步加载数据

    Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.这篇文章主要介绍了vue.js 表格分页ajax 异步加载数据的相关资料,需要的朋友可以参考下...2016-10-20
  • 基于JavaScript实现表单密码的隐藏和显示出来

    为了网站的安全性,很多朋友都把密码设的比较复杂,但是如何密码不能明显示,不知道输的是对是错,为了安全起见可以把密码显示的,那么基于js代码如何实现的呢?下面通过本文给大家介绍JavaScript实现表单密码的隐藏和显示,需要的朋友参考下...2016-03-03
  • js实现列表按字母排序

    这篇文章主要为大家详细介绍了js实现列表按字母排序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-11
  • 如何使用JavaScript实现无缝滚动自动播放轮播图效果

    这篇文章主要介绍了如何使用JavaScript实现“无缝滚动 自动播放”轮播图效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-08-20
  • 基于JavaScript实现文字超出部分隐藏

    这篇文章主要介绍了基于JavaScript实现文字超出部分隐藏 的相关资料,需要的朋友可以参考下...2016-03-01
  • JS实现响应鼠标点击动画渐变弹出层效果代码

    这篇文章主要介绍了JS实现响应鼠标点击动画渐变弹出层效果代码,具有非常自然流畅的动画过度效果,涉及JavaScript针对鼠标事件的响应及页面元素样式的动态操作相关技巧,需要的朋友可以参考下...2016-03-28
  • node.JS md5加密中文与php结果不一致怎么办

    这次文章要给大家介绍的是node.JS md5加密中文与php结果不一致怎么办,不知道具体解决办法的下面跟小编一起来看看。 因项目需要,需要Node.js与PHP做接口调用,发现nod...2017-07-06
  • 浅析AngularJS Filter用法

    系统的学习了一下angularjs,发现angularjs的有些思想根php的模块smarty很像,例如数据绑定,filter。如果对smarty比较熟悉的话,学习angularjs会比较容易一点,这篇文章给大家介绍angularjs filter用法详解,感兴趣的朋友一起学习吧...2015-12-29