1(function ($) { 2 3 $.fn.UniversalTracking = function () { 4 5 return this.each(function () { 6 $(this).on('click', function (e) { 7 8 var data = $(this).data('track'); 9 10 if (data) { 11 trackEvent(data.category, data.action, data.label, data.value) 12 } 13 14 if (typeof console.log !== 'undefined') { 15 console.log('Tracking click', data); 16 } 17 }); 18 }); 19 20 }; 21 22 23 $.UniversalTracking = function (data) { 24 25 if (typeof data === 'object') { 26 27 trackEvent(data.category, data.action, data.label, data.value) 28 29 return; 30 31 } 32 33 }; 34 35 36 var trackEvent = function (category, action, label, value) { 37 38 if (typeof console.log !== 'undefined') { 39 console.log('trackEvent', category, action, label, value); 40 } 41 42 if (typeof dataLayer !== "undefined") { 43 console.log('hiya!'); 44 dataLayer.push({ 45 'event': 'trackEvent', 46 'trackEventCategory': kvn(category), 47 'trackEventAction': kvn(action), 48 'trackEventLabel': kvn(label), 49 'trackEventValue': typeof value !== 'undefined' ? value : 0 50 }); 51 } 52 53 }; 54 55 var kvn = function (obj) { 56 57 if (typeof obj !== 'object') { 58 return obj; 59 } 60 61 var newObj = {}; 62 var keys = [], k, i, len; 63 64 for (k in obj) { 65 if (obj.hasOwnProperty(k)) { 66 keys.push(k); 67 } 68 } 69 70 keys.sort(); 71 72 len = keys.length; 73 for (i = 0; i < len; i++) { 74 newObj[keys[i]] = obj[keys[i]]; 75 } 76 77 var value = ""; 78 79 for (var key in newObj) { 80 if (newObj.hasOwnProperty(key)) { 81 value += key + ":" + newObj[key] + "; "; 82 } 83 } 84 85 if (typeof console.log !== 'undefined') { 86 console.log('value', value); 87 } 88 return value; 89 90 }; 91 92 $('a[data-track]').UniversalTracking(); 93 94}(jQuery));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.