// AJAX类 var $moxueyuan_monitor = $moxueyuan_monitor || {}; $moxueyuan_monitor.request = function(strParame) { var args = new Object( ); var query = location.search.substring(1); var pairs = query.split("&"); // Break at ampersand for(var i = 0; i < pairs.length; i++) { var pos = pairs[i].indexOf('='); if (pos == -1) continue; var argname = pairs[i].substring(0,pos); var value = pairs[i].substring(pos+1); value = decodeURIComponent(value); args[argname] = value; } return args[strParame]; } $moxueyuan_monitor.windowOpen = function(url, target){ var a = document.createElement("a"); a.setAttribute("href", url); if(target == null){ target = '_blank'; } a.setAttribute("target", target); document.body.appendChild(a); if(a.click){ a.click(); }else{ try{ var evt = document.createEvent('Event'); a.initEvent('click', true, true); a.dispatchEvent(evt); }catch(e){ window.open(url); } } document.body.removeChild(a); } $moxueyuan_monitor.get = function(){ var self = this; var moxueyuan_ajaximg = new Image; moxueyuan_ajaximg.onload = function(){ self.callback && self.callback({}); } this.send = function(){ moxueyuan_ajaximg.src = this.url; } }; $moxueyuan_monitor.ajax = function() { var xmlObj = false; var CBfunc,ObjSelf; ObjSelf=this; try { xmlObj=new XMLHttpRequest; } catch(e) { try { xmlObj=new ActiveXObject("MSXML2.XMLHTTP"); } catch(e2) { try { xmlObj=new ActiveXObject("Microsoft.XMLHTTP"); } catch(e3) { xmlObj=false; } } } if (!xmlObj) return false; this.method="POST"; this.url; this.async=true; this.content=""; this.callback=function(cbobj) {return;} this.send=function() { if(!this.method||!this.url||!this.async) return false; xmlObj.open (this.method, this.url, this.async); if(this.method=="POST") xmlObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xmlObj.onreadystatechange=function() { if(xmlObj.readyState==4) { //if(xmlObj.status==200) { ObjSelf.callback(xmlObj); //} } } if(this.method=="POST") xmlObj.send(this.content); else xmlObj.send(null); } } $moxueyuan_monitor.uuid = function(){ // Private array of chars to use var CHARS = '0123456789abcdefghijklmnopqrstuvwxyz'.split(''); var chars = CHARS, uuid = [], i; var radix = chars.length; // rfc4122, version 4 form var r; // rfc4122 requires these characters uuid[8] = uuid[13] = uuid[18] = uuid[23] = '_'; uuid[14] = '4'; // Fill in random data. At i==19 set the high bits of clock sequence as // per rfc4122, sec. 4.1.5 for (i = 0; i < 36; i++) { if (!uuid[i]) { r = 0 | Math.random()*16; uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; } } return uuid.join(''); } $moxueyuan_monitor.Cookie = { /* 函数名称:HL.Cookie.Get([string name]) 函数功能:得到Cookie 参数:name 可选项,要取得的Cookie名称 说明:name为空时将通过数组形式返回全部Cookie,name不为空时返回此Cookie名称的值,没有任何值时返回undefined */ Get : function(name){ var cv = document.cookie.split("; ");//使用"; "分割Cookie var cva = [], temp; /*循环的得到Cookie名称与值*/ for(i=0;i< cv.length;i++){ temp = cv[i].split("=");//用"="分割Cookie的名称与值 cva[temp[0]] = unescape(temp[1]); } if(name) return cva[name];//如果有name则输出这个name的Cookie值 else return cva;//如果没有name则输出以名称为key,值为Value的数组 }, /* 函数名称:HL.Cookie.Set(string name, string value[, int expires[, string path[, string domain[, string secure]]]]) 函数功能:存入Cookie 参数:name 必要项,要存入的Cookie名称 value 必要项,要存入的Cookie名称对应的值 expires 可选项,Cookie的过期时间,可以填入以秒为单位的保存时间,也可以填入日期格式(wdy, DD-Mon-YYYY HH:MM:SS GMT)的到期时间 path 可选项,Cookie在服务器端的有效路径 domain 可选项,该Cookie的有效域名 secure 可选项, 指明Cookie 是否仅通过安全的 HTTPS 连接传送,0或false或空时为假 说明:保存成功则返回true,保存失败返回false */ Set : function(name, value, expires, path, domain, secure){ if(!name || !value) return false;//如果没有name和value则返回false if(name == "" || value == "") return false;//如果name和value为空则返回false /*对于过期时间的处理*/ if(expires){ /*如果是数字则换算成GMT时间,当前时间加上以秒为单位的expires*/ if(/^[0-9]+$/.test(expires)){ var today = new Date(); expires = new Date(today.getTime()+expires*1000).toGMTString(); /*判断expires格式是否正确,不正确则赋值为undefined*/ } } /*合并cookie的相关值*/ var cv = name+"="+escape(value)+";" + ((expires) ? " expires="+expires+";" : "") + ((path) ? "path="+path+";" : "") + ((domain) ? "domain="+domain+";" : "") + ((secure && secure != 0) ? "secure" : ""); /*判断Cookie总长度是否大于4K*/ if(cv.length < 4096){ document.cookie = cv;//写入cookie return true; }else{ return false; } }, /* 函数名称:HL.Cookie.Del(string name[, string path[, string domain]]) 函数功能:删除Cookie 参数:name 必要项,要删除的Cookie名称 path 可选项,要删除的Cookie在服务器端的有效路径 domain 可选项,要删除的Cookie的有效域名 说明:删除成功返回true,删除失败返回false */ Del : function(name, path, domain){ if(!name) return false;//如果没有name则返回false if(name == "") return false;//如果name为空则返回false if(!this.Get(name)) return false;//如果要删除的name值不存在则返回false /*合并Cookie的相关值*/ document.cookie = name+"=;" + ((path) ? "path="+path+";" : "") + ((domain) ? "domain="+domain+";" : "") + "expires=Thu, 01-Jan-1970 00:00:01 GMT;"; return true; } } $moxueyuan_monitor.getHost = function(url) { var host = ''; var regex = /.*\:\/\/([^\/|:]*).*/; var match = decodeURIComponent(url).match(regex); if (typeof match != "undefined" && null != match) { host = match[1]; } return host; } //更新来源session $moxueyuan_monitor.update_session = function(update){ var cookie_str = $moxueyuan_monitor.Cookie.Get('moxueyuan_monitor_session'); if (!update || !cookie_str){ var host = $moxueyuan_monitor.getHost(document.referrer); var referers=document.referrer; cookie_str = {'time': new Date().getTime(), 'host': host, 'rand': Math.round(Math.random()*999),'referers':referers}; cookie_str = JSON.stringify(cookie_str); } $moxueyuan_monitor.Cookie.Set('moxueyuan_monitor_session', cookie_str, 60*15, '/', 'moxueyuan.com'); $moxueyuan_monitor.Cookie.Set('moxueyuan_monitor_referrer', document.referrer, 60*60*24*365, '/', 'moxueyuan.com'); } //alert(moxueyuan_monitor.referrer); //var moxueyuan_session = $moxueyuan_monitor.Cookie.Get('moxueyuan_monitor_session'); // //if (!moxueyuan_session) { // $moxueyuan_monitor.update_session(); // // //}else if(moxueyuan_monitor.referrer){ // // var host = $moxueyuan_monitor.getHost(document.referrer); // var host2 = $moxueyuan_monitor.getHost(document.URL); // //alert(host+'|'+host2) // if (host2 != host){ // $moxueyuan_monitor.update_session(); // }else{ // $moxueyuan_monitor.update_session(true); // } //}else{ // $moxueyuan_monitor.update_session(); //} //判断来路 /** / 监测来源 / xiongyouliang / 2014-12-14 */ var moxueyuan_img; var moxueyuan_tag = document.getElementById("moxueyuan_monitor"); var moxueyuan_monitor = { domain: 'https://www.moxueyuan.com', channeltag : $moxueyuan_monitor.request('channeltag') || '', type : $moxueyuan_monitor.request('type') || '0', //domain: 'http://localhost/git_moxueyuan', monitorid: 0, url: encodeURIComponent(document.URL), referrer: encodeURIComponent(document.referrer), datatime: new Date().getTime(), useragent: encodeURIComponent(navigator.userAgent.toLowerCase()) }; console.log(document.referrer); if (document.referrer != '' && moxueyuan_monitor.channeltag == ''){ if (document.referrer.indexOf('baidu.com') > 0){ moxueyuan_monitor.channeltag = 'baidu'; } } //======================================================== var moxueyuan_uuid = $moxueyuan_monitor.Cookie.Get('moxueyuan_monitor_uuid'); var moxueyuan_session = $moxueyuan_monitor.Cookie.Get('moxueyuan_monitor_session'); //alert(moxueyuan_refer); //alert(moxueyuan_uuid) if (!moxueyuan_uuid){ moxueyuan_uuid = $moxueyuan_monitor.uuid().toLowerCase(); $moxueyuan_monitor.Cookie.Set('moxueyuan_monitor_uuid', moxueyuan_uuid, 60*60*24*365, '/', 'moxueyuan.com'); } if (!moxueyuan_session){ // $moxueyuan_monitor.Cookie.Set('moxueyuan_monitor_uuid', moxueyuan_uuid, 60*15, '/', 'moxueyuan.com'); } $moxueyuan_monitor.Cookie.Set('moxueyuan_monitor_url', moxueyuan_monitor.url, 60*60*24*365, '/', 'moxueyuan.com'); var moxueyuan_host = ''; //alert(moxueyuan_uuid) var moxueyuan_imgsrc = moxueyuan_monitor.domain+'/monitor.php/monitor?monitorid='+moxueyuan_monitor.monitorid+'&type='+moxueyuan_monitor.type+'&channeltag='+moxueyuan_monitor.channeltag+'&referrer='+moxueyuan_monitor.referrer+'&url='+moxueyuan_monitor.url+'&datetime='+moxueyuan_monitor.datatime+'&useragent='+moxueyuan_monitor.useragent+'&uid='+moxueyuan_uuid+'&host='+moxueyuan_host; //document.write(src); if (moxueyuan_monitor.channeltag){ setTimeout('moxueyuan_img = new Image;moxueyuan_img.src=moxueyuan_imgsrc;',0); } /** * 监测按钮 */ $moxueyuan_monitor.request = function(data, callback){ //var moxueyuan_gotourl = obj.getAttribute('href'); var moxueyuan_ajaxobj = new $moxueyuan_monitor.get; // 创建AJAX对象 moxueyuan_ajaxobj.method = "GET"; // 设置请求方式为GET moxueyuan_ajaxobj.url= moxueyuan_monitor.domain+'/monitor.php/log/index?monitorid='+data.monitorid+'&type='+data.type+'&referrer='+moxueyuan_monitor.referrer+'&url='+moxueyuan_monitor.url+'&datetime='+moxueyuan_monitor.datatime+'&useragent='+moxueyuan_monitor.useragent+'&uid='+moxueyuan_uuid; moxueyuan_ajaxobj.callback=function(xmlobj) { if (callback){ callback(xmlobj, moxueyuan_uuid); } } moxueyuan_ajaxobj.send(); }