web-event-tracking
Version:
event tracking in web
2 lines (1 loc) • 9 kB
JavaScript
;!function(){window.brw||(window.brw={},window.brw.browserInfo={});function e(e){return/cpu (?:iphone )?os (\d+_\d+)/.test(e)?parseFloat(RegExp.$1.replace("_",".")):2}var n={result:"Chrome",details:{Chrome:5,Chromium:0,_360SE:0,_360EE:0},sorted:["Chrome","360SE","360EE","Chromium"],check:function(){var e,n={Chrome:5,Chromium:0,_360SE:0,_360EE:0},t=window.navigator.plugins,i=window.chrome.webstore,r=Object.keys(i).length,o=t.length;if(window.clientInformation.languages||(n._360SE+=8),/zh/i.test(navigator.language)&&(n._360SE+=3,n._360EE+=3),window.clientInformation.languages){var a=window.clientInformation.languages.length;a>=3?(n.Chrome+=10,n.Chromium+=6):2===a?(n.Chrome+=3,n.Chromium+=6,n._360EE+=6):1===a&&(n.Chrome+=4,n.Chromium+=4)}var s=0;for(var c in t)(e=/^(.+) PDF Viewer$/.exec(t[c].name))?"Chrome"===e[1]?(n.Chrome+=6,n._360SE+=6,s=1):"Chromium"===e[1]&&(n.Chromium+=10,n._360EE+=6,s=1):"np-mswmp.dll"===t[c].filename&&(n._360SE+=20,n._360EE+=20);s||(n.Chromium+=9),r<=1?n._360SE+=7:(n._360SE+=4,n.Chromium+=3,o>=30?(n._360EE+=7,n._360SE+=7,n.Chrome+=7):o<30&&o>10?(n._360EE+=3,n._360SE+=3,n.Chrome+=3):n.Chromium+=6);var d={};d.Chrome=n.Chrome,d.Chromium=n.Chromium,d["360SE"]=n._360SE,d["360EE"]=n._360EE;var u=[];for(var h in d)u.push([h,d[h]]);return u.sort((function(e,n){return n[1]-e[1]})),this.sorted=u,this.details=n,this.result=u[0][0]||"",this.result.toLowerCase()}};function t(){var e="",n=window.navigator.appVersion,t=window.external;return t&&"SEVersion"in t?e="sougou":t&&"LiebaoGetVersion"in t?e="liebao":/QQBrowser/.test(n)?e="qq":/Maxthon/.test(n)?e="maxthon":/TaoBrowser/.test(n)?e="taobao":/BIDUBrowser/.test(n)?e="baidu":/UBrowser/.test(n)&&(e="uc"),e}var i=function(){var i,r={},o=navigator.userAgent.toLowerCase();if(i=o.match(/rv:([\d.]+)/))r.name="ie",r.ie=i[1],o.indexOf("wow")>-1?r.type=t()?t():"360":r.type="IE";else if(i=o.match(/msie ([\d.]+)/))r.name="ie",r.ie=i[1],o.indexOf("wow")>-1?r.type=t()?t():"360":r.type="IE";else if(i=o.match(/edge\/([\d.]+)/))r.name="edge",r.edge=i[1],r.type="edge";else if(i=o.match(/firefox\/([\d.]+)/))r.name="firefox",r.firefox=i[1],r.type="firefox";else if(i=o.match(/chrome\/([\d.]+)/)){r.name="chrome",r.chrome=i[1];var a=function(e){if(void 0!==window.scrollMaxX)return"";var i=t();if(""!==i)return i;if(window.navigator.vendor&&0===window.navigator.vendor.indexOf("Opera"))return"opera";var r=navigator.platform.toLowerCase();return 0===r.indexOf("mac")||0===r.indexOf("linux")||parseInt(e)>69?"chrome":n.check()}(r.chrome);a&&(r.type=a)}else(i=o.match(/opera.([\d.]+)/))?(r.name="opera",r.opera=i[1],r.type="opera"):(i=o.match(/version\/([\d.]+).*safari/))?(r.name="safari",r.safari=i[1],r.type="safari"):(r.name="unknown",r.unknow=0);var s={};if(o.indexOf("iphone")>-1)s.name="iphone",s.iphone=e(o);else if(o.indexOf("ipod")>-1)s.name="ipod",s.ipod=e(o);else if(o.indexOf("ipad")>-1)s.name="ipad",s.ipad=e(o);else if(o.indexOf("nokia")>-1)s.name="nokia",s.nokia=!0;else if(/android (\d+(\.\d+)?)/.test(o))s.name="android",s.android=parseFloat(RegExp.$1);else if(o.indexOf("win")>-1){if(s.name="win",/win(?:dows )?([^do]{2})\s?(\d+\.\d+)?/.test(o))if("nt"===RegExp.$1)switch(RegExp.$2){case"5.0":s.win="2000";break;case"5.1":s.win="XP";break;case"6.0":s.win="Vista";break;case"6.1":s.win="7";break;case"6.2":s.win="8";break;case"6.3":s.win="8.1";break;case"10.0":s.win="10";break;default:s.win="NT"}else"9x"===RegExp.$1?s.win="ME":s.win=RegExp.$1}else o.indexOf("mac")>-1?s.name="mac":o.indexOf("linux")>-1&&(s.name="linux");var c=s.name+(s[s.name]||"")+"|"+r.name+r[r.name];return{browser:r,system:s,isMobile:s.android||s.iphone||s.ios||s.ipad||s.ipod||s.nokia,string:c}}();window.brw.browserInfo=i}();var tracking={trackingServerUrl:"http://tracking.abc.com/",appid:"b1651f4562174c06",token:"kgfk8i987kgfkjhwerሴ",distinctIdKey:"distinctId",sourceKey:"source",defaultSource:"message",interval:null,intervalId:null,phone:null,events:[],setConfig:function(e){Object.assign(this,e)},click:function(e){var n=[e.pageX,e.pageY],t=e.target.id,i=e.target.className,r={nodeName:e.target.nodeName,id:t,className:i},o=document.documentElement.offsetWidth,a=document.documentElement.offsetHeight,s=window.screen.width,c=window.screen.height,d=window.screen.availWidth,u=window.screen.availHeight,h=window.innerWidth,l=window.innerHeight,w=window.location.href;tracking.addEvent({event:"click",pageWidth:o,pageHeight:a,screenWidth:s,screenHeight:c,screenAvailWidth:d,screenAvailHeight:u,windowInnerWidth:h,windowInnerHeight:l,position:n,targetEle:r,currentUrl:w})},toThirdPartyPayment:function(e){this.addEvent({event:"toThirdPartyPayment",thirdPartyPayment:e})},toExternalUrl:function(){this.addEvent({event:"toExternalUrl",externalUrl:"http://www.bcd.com"})},setPhone:function(e){this.phone=e},submitRightCaptcha:function(){this.addEvent({event:"submitRightCaptcha"})},submitWrongCaptcha:function(){this.addEvent({event:"submitWrongCaptcha"})},switchCaptcha:function(){this.addEvent({event:"switchCaptcha"})},getEnv:function(){return window.brw.browserInfo||{}},getQueryValue:function(e){for(var n=decodeURI(window.location.search.substring(1)).split("&"),t=0;t<n.length;t++){var i=n[t].split("=");if(i[0]===e)return i[1]}return null},getSource:function(){var e=this.getQueryValue(this.SOURCE);return e||this.defaultSource},getTime:function(){return(new Date).getTime()},getDistinctId:function(){var e=this.getCookie(tracking.distinctIdKey);return e||(e=this.uuid(),this.setCookie(tracking.distinctIdKey,e),e)},uuid:function(){for(var e=[],n=0;n<36;n++)e[n]="0123456789abcdef".substr(Math.floor(16*Math.random()),1);e[14]="4",e[19]="0123456789abcdef".substr(3&e[19]|8,1),e[8]=e[13]=e[18]=e[23]="-";var t=e.join("");return t},setCookie:function(e,n){document.cookie=e+"="+n+";"+document.cookie},getCookie:function(e){for(var n=e+"=",t=decodeURIComponent(document.cookie).split(";"),i=0;i<t.length;i++){for(var r=t[i];" "===r.charAt(0);)r=r.substring(1);if(0===r.indexOf(n))return r.substring(n.length,r.length)}return""},getCommonParams:function(){var e=this.getDistinctId(),n=this.getEnv(),t=this.getTime(),i={distinctId:e,source:this.getSource(),time:t,env:n};return tracking.phone&&(i.phone=tracking.phone),i},addEvent:function(e){var n=this.getCommonParams(),t=Object.assign(n,e);this.events.push(JSON.stringify(t))},trackingPost:function(){if(tracking.events&&0!==tracking.events.length){var e={appid:tracking.appid,token:tracking.token,events:JSON.parse(JSON.stringify(tracking.events))};tracking.post(tracking.trackingServerUrl,{"Content-Type":"application/json"},JSON.stringify(e)),tracking.events=[]}},post:function(e,n,t,i){var r=new XMLHttpRequest;r.open("post",e),r.onreadystatechange=function(){if(4===r.readyState)if(200===r.status){var e=r.responseText;if(!e)return;var n=JSON.parse(e);"200"===n.code?i&&i(n):console.log(n.msg)}else console.log(r.statusText)},r.onerror=function(e){console.log(r.statusText)},Object.keys(n).forEach((function(e){r.setRequestHeader(e,n[e])})),r.send(t)}};function onhashchange(e){var n=e.newUrl,t=e.oldUrl;tracking.addEvent({event:"hashChange",sourceUrl:t,currentUrl:n})}function onpopstate(e){var n=e.target.location.href;tracking.addEvent({event:"popState",currentUrl:n})}function onunload(e){var n=e.target.location.href;tracking.addEvent({event:"unload",currentUrl:n}),clearInterval(tracking.intervalId),tracking.intervalId=null,tracking.trackingPost(),window.history.onpushstate=null,window.history.onreplacestate=null,window.removeEventListener("load",onload,!1),window.removeEventListener("beforeunload",onbeforeunload,!1),window.removeEventListener("unload",onunload,!1),window.removeEventListener("popstate",onpopstate,!1),window.removeEventListener("hashchange",onhashchange,!1),window.removeEventListener("click",tracking.click,!1),window.tracking=null,tracking=null}function onbeforeunload(e){var n=e.target.location.href;tracking.addEvent({event:"beforeUnload",currentUrl:n})}function onload(e){var n=e.target.location.href;tracking.addEvent({event:"load",currentUrl:n}),tracking.intervalId=setInterval(tracking.trackingPost,tracking.interval)}!function(e){var n=e.pushState;e.pushState=function(){return"function"==typeof e.onpushstate&&e.onpushstate(arguments),n.apply(e,arguments)};var t=e.replaceState;e.replaceState=function(){return"function"==typeof e.onreplacestate&&e.onreplacestate(arguments),t.apply(e,arguments)}}(window.history),window.history.onpushstate=function(e){var n=window.location.href,t=e[2];tracking.addEvent({event:"pushState",currentUrl:n,targetUrl:t})},window.history.onreplacestate=function(e){var n=window.location.href,t=e[2];tracking.addEvent({event:"replaceState",currentUrl:n,targetUrl:t})},window.addEventListener("load",onload,!1),window.addEventListener("beforeunload",onbeforeunload,!1),window.addEventListener("unload",onunload,!1),window.addEventListener("popstate",onpopstate,!1),window.addEventListener("hashchange",onhashchange,!1),window.addEventListener("click",tracking.click,!1),window.tracking=tracking;