Skip to content

Commit 3a5079a

Browse files
committed
Version: 1.4 – Update to delegated events (Issue #5)
1 parent d59ba7b commit 3a5079a

File tree

3 files changed

+12
-16
lines changed

3 files changed

+12
-16
lines changed

docs/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ <h5>*Unload Session Data Simulated on Each Interaction</h5>
272272
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.min.js"></script>
273273
<!-- Include interactor.min.js -->
274274
<script type="application/javascript">
275-
var Interactor=function(a){this.__init__(a)};Interactor.prototype={__init__:function(a){var b=this;return b.interactions="boolean"!=typeof a.interactions||a.interactions,b.interactionElement="string"==typeof a.interactionElement?a.interactionElement:"interaction",b.interactionEvents=Array.isArray(a.interactionEvents)===!0?a.interactionEvents:["mouseup","touchend"],b.conversions="boolean"!=typeof a.conversions||a.conversions,b.conversionElement="string"==typeof a.conversionElement?a.conversionElement:"conversion",b.conversionEvents=Array.isArray(a.conversionEvents)===!0?a.conversionEvents:["mouseup","touchend"],b.endpoint="string"==typeof a.endpoint?a.endpoint:"/interactions",b.async="boolean"!=typeof a.async||a.async,b.debug="boolean"!=typeof a.debug||a.debug,b.records=[],b.session={},b.loadTime=new Date,b.__initializeSession__(),b.__bindEvents__(),b},__bindEvents__:function(){var a=this;if(a.interactions===!0)for(var b=0;b<a.interactionEvents.length;b++)for(var c=a.interactionEvents[b],d=document.getElementsByClassName(a.interactionElement),e=0;e<d.length;e++)d[e].addEventListener(c,function(b){b.stopPropagation(),a.__addInteraction__(b,"interaction")});if(a.conversions===!0)for(var b=0;b<a.conversionEvents.length;b++)for(var c=a.conversionEvents[b],d=document.getElementsByClassName(a.conversionElement),e=0;e<d.length;e++)d[e].addEventListener(c,function(b){b.stopPropagation(),a.__addInteraction__(b,"conversion")});return window.onbeforeunload=function(b){a.__sendInteractions__()},a},__addInteraction__:function(a,b){var c=this,d={type:b,event:a.type,targetTag:a.target.nodeName,targetClasses:a.target.className,content:a.target.innerText,clientPosition:{x:a.clientX,y:a.clientY},screenPosition:{x:a.screenX,y:a.screenY},createdAt:new Date};return c.records.push(d),c.debug&&(c.__closeSession__(),console.log("Session:\n",c.session)),c},__initializeSession__:function(){var a=this;return a.session={loadTime:a.loadTime,unloadTime:new Date,language:window.navigator.language,platform:window.navigator.platform,port:window.location.port,clientStart:{name:window.navigator.appVersion,innerWidth:window.innerWidth,innerHeight:window.innerHeight,outerWidth:window.outerWidth,outerHeight:window.outerHeight},page:{location:window.location.pathname,href:window.location.href,origin:window.location.origin,title:document.title},endpoint:a.endpoint},a},__closeSession__:function(){var a=this;return a.session.unloadTime=new Date,a.session.interactions=a.records,a.session.clientEnd={name:window.navigator.appVersion,innerWidth:window.innerWidth,innerHeight:window.innerHeight,outerWidth:window.outerWidth,outerHeight:window.outerHeight},a},__sendInteractions__:function(){var a=this,b=new XMLHttpRequest;return a.__closeSession__(),b.open("POST",a.endpoint,a.async),b.setRequestHeader("Content-Type","application/json; charset=UTF-8"),b.send(JSON.stringify(a.session)),a}};
275+
var Interactor=function(n){this.__init__(n)};Interactor.prototype={__init__:function(n){var e=this;return e.interactions="boolean"!=typeof n.interactions||n.interactions,e.interactionElement="string"==typeof n.interactionElement?n.interactionElement:"interaction",e.interactionEvents=!0===Array.isArray(n.interactionEvents)?n.interactionEvents:["mouseup","touchend"],e.conversions="boolean"!=typeof n.conversions||n.conversions,e.conversionElement="string"==typeof n.conversionElement?n.conversionElement:"conversion",e.conversionEvents=!0===Array.isArray(n.conversionEvents)?n.conversionEvents:["mouseup","touchend"],e.endpoint="string"==typeof n.endpoint?n.endpoint:"/interactions",e.async="boolean"!=typeof n.async||n.async,e.debug="boolean"!=typeof n.debug||n.debug,e.records=[],e.session={},e.loadTime=new Date,e.__initializeSession__(),e.__bindEvents__(),e},__bindEvents__:function(){var n=this;if(!0===n.interactions)for(e=0;e<n.interactionEvents.length;e++)document.querySelector("body").addEventListener(n.interactionEvents[e],function(e){e.stopPropagation(),e.target.classList.value===n.interactionElement&&n.__addInteraction__(e,"interaction")});if(!0===n.conversions)for(var e=0;e<n.conversionEvents.length;e++)document.querySelector("body").addEventListener(n.conversionEvents[e],function(e){e.stopPropagation(),e.target.classList.value===n.conversionElement&&n.__addInteraction__(e,"conversion")});return window.onbeforeunload=function(e){n.__sendInteractions__()},n},__addInteraction__:function(n,e){var t=this,i={type:e,event:n.type,targetTag:n.target.nodeName,targetClasses:n.target.className,content:n.target.innerText,clientPosition:{x:n.clientX,y:n.clientY},screenPosition:{x:n.screenX,y:n.screenY},createdAt:new Date};return t.records.push(i),t.debug&&(t.__closeSession__(),console.log("Session:\n",t.session)),t},__initializeSession__:function(){var n=this;return n.session={loadTime:n.loadTime,unloadTime:new Date,language:window.navigator.language,platform:window.navigator.platform,port:window.location.port,clientStart:{name:window.navigator.appVersion,innerWidth:window.innerWidth,innerHeight:window.innerHeight,outerWidth:window.outerWidth,outerHeight:window.outerHeight},page:{location:window.location.pathname,href:window.location.href,origin:window.location.origin,title:document.title},endpoint:n.endpoint},n},__closeSession__:function(){var n=this;return n.session.unloadTime=new Date,n.session.interactions=n.records,n.session.clientEnd={name:window.navigator.appVersion,innerWidth:window.innerWidth,innerHeight:window.innerHeight,outerWidth:window.outerWidth,outerHeight:window.outerHeight},n},__sendInteractions__:function(){var n=this,e=new XMLHttpRequest;return n.__closeSession__(),e.open("POST",n.endpoint,n.async),e.setRequestHeader("Content-Type","application/json; charset=UTF-8"),e.send(JSON.stringify(n.session)),n}};
276276
</script>
277277
<!-- Demo Script -->
278278
<script>

interactor.js

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -68,28 +68,24 @@ Interactor.prototype = {
6868
// Set Interaction Capture
6969
if (interactor.interactions === true) {
7070
for (var i = 0; i < interactor.interactionEvents.length; i++) {
71-
var ev = interactor.interactionEvents[i],
72-
targets = document.getElementsByClassName(interactor.interactionElement);
73-
for (var j = 0; j < targets.length; j++) {
74-
targets[j].addEventListener(ev, function (e) {
75-
e.stopPropagation();
71+
document.querySelector('body').addEventListener(interactor.interactionEvents[i], function (e) {
72+
e.stopPropagation();
73+
if (e.target.classList.value === interactor.interactionElement) {
7674
interactor.__addInteraction__(e, "interaction");
77-
});
78-
}
75+
}
76+
});
7977
}
8078
}
8179

8280
// Set Conversion Capture
8381
if (interactor.conversions === true) {
8482
for (var i = 0; i < interactor.conversionEvents.length; i++) {
85-
var ev = interactor.conversionEvents[i],
86-
targets = document.getElementsByClassName(interactor.conversionElement);
87-
for (var j = 0; j < targets.length; j++) {
88-
targets[j].addEventListener(ev, function (e) {
89-
e.stopPropagation();
83+
document.querySelector('body').addEventListener(interactor.conversionEvents[i], function (e) {
84+
e.stopPropagation();
85+
if (e.target.classList.value === interactor.conversionElement) {
9086
interactor.__addInteraction__(e, "conversion");
91-
});
92-
}
87+
}
88+
});
9389
}
9490
}
9591

interactor.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)