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 相关文章推荐
比较详细的关于javascript中void(0)的具体含义解释
Aug 02 Javascript
js自动生成对象的属性示例代码
Oct 28 Javascript
js replace替换所有匹配的字符串
Feb 13 Javascript
js时间比较示例分享(日期比较)
Mar 05 Javascript
Egret引擎开发指南之创建项目
Sep 03 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
Jun 23 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
Oct 14 Javascript
JS 在数组指定位置插入/删除数据的方法
Jan 12 Javascript
详解javascript中对数据格式化的思考
Jan 23 Javascript
微信小程序实现卡片左右滑动效果的示例代码
May 01 Javascript
JS 自执行函数原理及用法
Aug 05 Javascript
layui form表单提交后实现自动刷新
Oct 25 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
ajax php 实现写入数据库
2009/09/02 PHP
PHP 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
php后台多用户权限组思路与实现程序代码分享
2012/02/13 PHP
解析PHP中如何将数组变量写入文件
2013/06/06 PHP
php实现utf-8转unicode函数分享
2015/01/06 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
详解WordPress中给链接添加查询字符串的方法
2015/12/18 PHP
用js查找法实现当前栏目的高亮显示的代码
2007/11/24 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
javascript中直接引用Microsoft的COM生成Word
2014/01/20 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
AngularJS基础知识
2014/12/21 Javascript
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
2015/07/30 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
JavaScript实现的数字与字符串转换功能示例
2017/08/23 Javascript
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
JS数组去重的6种方法完整实例
2018/12/08 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
小程序根据手机机型设置自定义底部导航距离
2019/06/04 Javascript
python list语法学习(带例子)
2013/11/01 Python
Python做文本按行去重的实现方法
2016/10/19 Python
Python线程指南详细介绍
2017/01/05 Python
keras实现基于孪生网络的图片相似度计算方式
2020/06/11 Python
python super()函数的基本使用
2020/09/10 Python
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
董事长秘书工作职责
2014/06/10 职场文书
运动会演讲稿50字
2014/08/25 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
2015年银行大堂经理工作总结
2015/04/24 职场文书
Python字典和列表性能之间的比较
2021/06/07 Python