-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtracker.min.js
More file actions
1 lines (1 loc) · 2.39 KB
/
tracker.min.js
File metadata and controls
1 lines (1 loc) · 2.39 KB
1
!function(t,e){function r(){if(e.XMLHttpRequest)return new e.XMLHttpRequest;try{return new e.ActiveXObject("MSXML2.XMLHTTP.3.0")}catch(t){}throw new Error("no xmlhttp request able to be created")}function a(t,e,r){t[e]=t[e]||r}e.nanoajax=t,t.ajax=function(t,e){"string"==typeof t&&(t={url:t});var n=t.headers||{},o=t.body,c=t.method||(o?"POST":"GET"),d=t.withCredentials||!1,s=r();s.withCredentials=d,s.onreadystatechange=function(){4==s.readyState&&e(s.status,s.responseText,s)},o&&(a(n,"X-Requested-With","XMLHttpRequest"),a(n,"Content-Type","application/x-www-form-urlencoded")),s.open(c,t.url,!0);for(var u in n)s.setRequestHeader(u,n[u]);s.send(o)}}({},function(){return this}());var Tracker={params:"",logUrl:"",started:[],ready:function(t){Tracker.params=t.params||{},Tracker.logUrl=t.logUrl||"",window.addEventListener("beforeunload",Tracker.pageEnd,!1),document.addEventListener?document.addEventListener("DOMContentLoaded",Tracker.pageStart,!1):document.attachEvent?document.attachEvent("onreadystatechange",function(){"complete"===document.readyState&&Tracker.pageStart()}):Tracker.pageStart()},error:function(){console.log("error")},pageStart:function(){for(var t=0;t<document.forms.length;t++)Tracker.formInit(document.forms[t])},pageEnd:function(){for(var t=0;t<document.forms.length;t++)"true"===document.forms[t].getAttribute("data-trackabandoned")&&-1!=Tracker.started.indexOf(document.forms[t].getAttribute("data-trackerhash"))&&Tracker.formAbandoned(document.forms[t])},formInit:function(t){Tracker.setHash(t),t.setAttribute("data-trackabandoned",!0),t.addEventListener("submit",Tracker.formSubmission,!1);for(var e=0;e<t.elements.length;e++)t.elements[e].setAttribute("data-trackparent",t.getAttribute("data-trackerhash")),t.elements[e].addEventListener("input",Tracker.fieldInput,!1)},formSubmission:function(){this.setAttribute("data-trackabandoned",!1)},formAbandoned:function(t){Tracker.log(t)},fieldInput:function(){Tracker.started.push(this.getAttribute("data-trackparent"))},log:function(t){for(var e=0;e<t.elements.length;e++)Tracker.params[t.elements[e].getAttribute("name")]=t.elements[e];console.log(Tracker.logUrl),nanoajax.ajax({url:Tracker.logUrl,method:"POST",body:Tracker.params},function(){})},setHash:function(t){var e=t.getAttribute("data-trackerhash")||t.getAttribute("name")||t.getAttribute("id")||Math.random().toString(36).substr(2,9);return t.setAttribute("data-trackerhash",e),e}};window.Tracker=Tracker;