JS 精确统计网站访问量的实例代码


Posted in Javascript onJuly 05, 2013
/**
 * 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);
}
Javascript 相关文章推荐
从零开始学习jQuery (二) 万能的选择器
Oct 01 Javascript
$.get获取一个文件的内容示例代码
Sep 11 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
Dec 22 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
Nov 25 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
Jan 19 Javascript
jQuery基本筛选选择器实例代码
Feb 06 Javascript
Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
May 10 Javascript
JS实现基于拖拽改变物体大小的方法
Jan 23 Javascript
小程序自定义模板实现吸顶功能
Jan 08 Javascript
JavaScript进阶(四)原型与原型链用法实例分析
May 09 Javascript
vue中this.$http.post()跨域和请求参数丢失的解决
Apr 08 Vue.js
JavaScript架构localStorage特殊场景下二次封装操作
Jun 21 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
Jul 05 #Javascript
基于JavaScript 下namespace 功能的简单分析
Jul 05 #Javascript
javascript基础之查找元素的详细介绍(访问节点)
Jul 05 #Javascript
js文件缓存之版本管理详解
Jul 05 #Javascript
单击复制文字兼容各浏览器的完美解决方案
Jul 04 #Javascript
把input初始值不写value的具体实现方法
Jul 04 #Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
Jul 04 #Javascript
You might like
PHP数组对比函数,存在交集则返回真,否则返回假
2011/02/03 PHP
php文件怎么打开 如何执行php文件
2011/12/21 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
使用PHP强制下载PDF文件示例
2014/01/17 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
js操作select控件的几种方法
2010/06/02 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
2018/12/03 Javascript
Django admin美化插件suit使用示例
2017/12/12 Python
pandas筛选某列出现编码错误的解决方法
2018/11/07 Python
python多线程并发让两个LED同时亮的方法
2019/02/18 Python
Django REST framework 单元测试实例解析
2019/11/07 Python
从python读取sql的实例方法
2020/07/21 Python
分享unittest单元测试框架中几种常用的用例加载方法
2020/12/02 Python
JackJones官方旗舰店:杰克琼斯男装
2018/03/27 全球购物
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
电脑教师的自我评价
2013/12/18 职场文书
职业生涯规划书前言
2014/04/15 职场文书
ktv筹备计划书
2014/05/03 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
2019年朋友圈经典励志语录50条
2019/07/05 职场文书
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS
python自动化测试通过日志3分钟定位bug
2021/11/20 Python