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学习笔记 delete运算符
Sep 13 Javascript
Jquery选中或取消radio示例
Sep 29 Javascript
解析javascript瀑布流原理实现图片滚动加载
Mar 10 Javascript
D3.js实现饼状图的方法详解
Sep 21 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
May 31 Javascript
微信小程序 自定义消息提示框
Aug 06 Javascript
Vue-路由导航菜单栏的高亮设置方法
Mar 17 Javascript
Vue实现底部侧边工具栏的实例代码
Sep 03 Javascript
JavaScript RegExp 对象用法详解
Sep 24 Javascript
微信小程序wxml列表渲染原理解析
Nov 27 Javascript
JavaScript forEach中return失效问题解决方案
Jun 01 Javascript
vue实现单一筛选、删除筛选条件
Oct 26 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计算函数执行时间的方法
2015/03/20 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
PHP-X系列教程之内置函数的使用示例
2017/10/16 PHP
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
Jquery选择子控件"大于号"和" "区别介绍及使用示例
2013/06/25 Javascript
Javascript Web Slider 焦点图示例源码
2013/10/10 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
js用typeof方法判断undefined类型
2014/07/15 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
使用Raygun来自动追踪AngularJS中的异常
2015/06/23 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
javascript基础知识
2016/06/07 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
微信小程序实现拖拽 image 触摸事件监听的实例
2017/08/17 Javascript
JavaScript函数绑定用法实例分析
2017/11/14 Javascript
Vue组件开发技巧总结
2018/03/04 Javascript
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
初步解析Python下的多进程编程
2015/04/28 Python
python回调函数用法实例分析
2015/05/09 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
2019/07/23 Python
python中numpy数组与list相互转换实例方法
2021/01/29 Python
实习生单位鉴定意见
2013/12/04 职场文书
音乐教学案例
2014/01/30 职场文书
12月小学生校园广播稿
2014/02/04 职场文书
应届毕业生如何写求职信
2014/02/16 职场文书
2014年移动公司工作总结
2014/12/08 职场文书
海洋天堂观后感
2015/06/05 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
给原生html中添加水印遮罩层的实现示例
2021/04/02 Javascript
Vue如何实现组件间通信
2021/05/15 Vue.js