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 相关文章推荐
单击某一段文字改写文本颜色
Jun 06 Javascript
JS基于VML技术实现的五角星礼花效果代码
Oct 26 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
Jan 27 Javascript
AngularJS 应用身份认证的技巧总结
Nov 07 Javascript
Angular的事件和表单详解
Dec 26 Javascript
Vue input控件通过value绑定动态属性及修饰符的方法
May 03 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
May 16 jQuery
如何解决vue2.0下IE浏览器白屏问题
Sep 13 Javascript
微信小程序实现获取小程序码和二维码java接口开发
Mar 29 Javascript
微信小程序在其他页面监听globalData中值的变化
Jul 15 Javascript
jquery实现拖拽小方块效果
Dec 10 jQuery
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
如何使用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
多文件上载系统完整版
2006/10/09 PHP
php将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
微信自定义分享php代码分析
2016/11/24 PHP
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
iview table高度动态设置方法
2018/03/14 Javascript
微信小程序实现美团菜单
2018/06/06 Javascript
nodejs异步编程基础之回调函数用法分析
2018/12/26 NodeJs
ajaxfileupload.js实现上传文件功能
2019/04/19 Javascript
vue实现购物车选择功能
2020/01/10 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
jQuery实现电梯导航模块
2020/12/22 jQuery
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
Swift中的协议(protocol)学习教程
2016/07/08 Python
python抓取网页中链接的静态图片
2018/01/29 Python
Python设计模式之外观模式实例详解
2019/01/17 Python
python实现微信自动回复及批量添加好友功能
2019/07/03 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
2020/06/17 Python
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
你常见到的runtime exception
2016/09/05 面试题
土地转让协议书范本
2014/04/15 职场文书
诉讼授权委托书
2014/10/15 职场文书
群众路线个人整改方案
2014/10/25 职场文书
营业员岗位职责
2015/02/11 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
聊聊JS ES6中的解构
2021/04/29 Javascript
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers