@microsoft/applicationinsights-clickanalytics-js 2.8.0-beta.2203-08 → 2.8.0-beta.2203-11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/{ai.clck.2.8.0-beta.2203-08.cjs.js → ai.clck.2.8.0-beta.2203-11.cjs.js} +701 -505
- package/browser/ai.clck.2.8.0-beta.2203-11.cjs.js.map +1 -0
- package/browser/ai.clck.2.8.0-beta.2203-11.cjs.min.js +6 -0
- package/browser/ai.clck.2.8.0-beta.2203-11.cjs.min.js.map +1 -0
- package/browser/{ai.clck.2.8.0-beta.2203-08.gbl.js → ai.clck.2.8.0-beta.2203-11.gbl.js} +701 -505
- package/browser/ai.clck.2.8.0-beta.2203-11.gbl.js.map +1 -0
- package/browser/ai.clck.2.8.0-beta.2203-11.gbl.min.js +6 -0
- package/browser/ai.clck.2.8.0-beta.2203-11.gbl.min.js.map +1 -0
- package/browser/ai.clck.2.8.0-beta.2203-11.integrity.json +66 -0
- package/browser/{ai.clck.2.8.0-beta.2203-08.js → ai.clck.2.8.0-beta.2203-11.js} +701 -505
- package/browser/ai.clck.2.8.0-beta.2203-11.js.map +1 -0
- package/browser/ai.clck.2.8.0-beta.2203-11.min.js +6 -0
- package/browser/ai.clck.2.8.0-beta.2203-11.min.js.map +1 -0
- package/browser/ai.clck.2.cjs.js +700 -504
- package/browser/ai.clck.2.cjs.js.map +1 -1
- package/browser/ai.clck.2.cjs.min.js +2 -2
- package/browser/ai.clck.2.cjs.min.js.map +1 -1
- package/browser/ai.clck.2.gbl.js +700 -504
- package/browser/ai.clck.2.gbl.js.map +1 -1
- package/browser/ai.clck.2.gbl.min.js +2 -2
- package/browser/ai.clck.2.gbl.min.js.map +1 -1
- package/browser/ai.clck.2.js +700 -504
- package/browser/ai.clck.2.js.map +1 -1
- package/browser/ai.clck.2.min.js +2 -2
- package/browser/ai.clck.2.min.js.map +1 -1
- package/dist/applicationinsights-clickanalytics-js.api.json +15 -1
- package/dist/applicationinsights-clickanalytics-js.api.md +1 -0
- package/dist/applicationinsights-clickanalytics-js.d.ts +2 -5
- package/dist/applicationinsights-clickanalytics-js.js +700 -504
- package/dist/applicationinsights-clickanalytics-js.js.map +1 -1
- package/dist/applicationinsights-clickanalytics-js.min.js +2 -2
- package/dist/applicationinsights-clickanalytics-js.min.js.map +1 -1
- package/dist/applicationinsights-clickanalytics-js.rollup.d.ts +2 -5
- package/dist-esm/Behaviours.js +1 -1
- package/dist-esm/ClickAnalyticsPlugin.js +74 -50
- package/dist-esm/ClickAnalyticsPlugin.js.map +1 -1
- package/dist-esm/DataCollector.js +4 -2
- package/dist-esm/DataCollector.js.map +1 -1
- package/dist-esm/Enums.js +1 -1
- package/dist-esm/Interfaces/Datamodel.js +1 -1
- package/dist-esm/applicationinsights-clickanalytics-js.js +1 -1
- package/dist-esm/common/Utils.js +1 -1
- package/dist-esm/events/PageAction.js +128 -126
- package/dist-esm/events/PageAction.js.map +1 -1
- package/dist-esm/events/WebEvent.js +109 -94
- package/dist-esm/events/WebEvent.js.map +1 -1
- package/dist-esm/handlers/AutoCaptureHandler.js +85 -83
- package/dist-esm/handlers/AutoCaptureHandler.js.map +1 -1
- package/dist-esm/handlers/DomContentHandler.js +279 -276
- package/dist-esm/handlers/DomContentHandler.js.map +1 -1
- package/package.json +5 -5
- package/src/ClickAnalyticsPlugin.ts +92 -47
- package/src/DataCollector.ts +24 -22
- package/src/Interfaces/Datamodel.ts +20 -21
- package/src/common/Utils.ts +8 -8
- package/src/events/PageAction.ts +165 -131
- package/src/events/WebEvent.ts +147 -78
- package/src/handlers/AutoCaptureHandler.ts +89 -79
- package/src/handlers/DomContentHandler.ts +336 -303
- package/types/ClickAnalyticsPlugin.d.ts +1 -4
- package/types/Interfaces/Datamodel.d.ts +3 -2
- package/types/events/PageAction.d.ts +6 -6
- package/types/events/WebEvent.d.ts +17 -17
- package/types/handlers/AutoCaptureHandler.d.ts +2 -10
- package/types/handlers/DomContentHandler.d.ts +3 -50
- package/types/tsdoc-metadata.json +1 -1
- package/browser/ai.clck.2.8.0-beta.2203-08.cjs.js.map +0 -1
- package/browser/ai.clck.2.8.0-beta.2203-08.cjs.min.js +0 -6
- package/browser/ai.clck.2.8.0-beta.2203-08.cjs.min.js.map +0 -1
- package/browser/ai.clck.2.8.0-beta.2203-08.gbl.js.map +0 -1
- package/browser/ai.clck.2.8.0-beta.2203-08.gbl.min.js +0 -6
- package/browser/ai.clck.2.8.0-beta.2203-08.gbl.min.js.map +0 -1
- package/browser/ai.clck.2.8.0-beta.2203-08.integrity.json +0 -66
- package/browser/ai.clck.2.8.0-beta.2203-08.js.map +0 -1
- package/browser/ai.clck.2.8.0-beta.2203-08.min.js +0 -6
- package/browser/ai.clck.2.8.0-beta.2203-08.min.js.map +0 -1
package/browser/ai.clck.2.gbl.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Application Insights JavaScript SDK - Click Analytics, 2.8.0-beta.2203-
|
|
2
|
+
* Application Insights JavaScript SDK - Click Analytics, 2.8.0-beta.2203-11
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
this.Microsoft = this.Microsoft || {};
|
|
@@ -73,7 +73,9 @@ this.Microsoft = this.Microsoft || {};
|
|
|
73
73
|
var __assignFn = ObjAssign || __objAssignFnImpl;
|
|
74
74
|
var extendStaticsFn = function (d, b) {
|
|
75
75
|
extendStaticsFn = ObjClass["setPrototypeOf"] ||
|
|
76
|
-
({ __proto__: [] } instanceof Array && function (d, b) {
|
|
76
|
+
({ __proto__: [] } instanceof Array && function (d, b) {
|
|
77
|
+
d.__proto__ = b;
|
|
78
|
+
}) ||
|
|
77
79
|
function (d, b) {
|
|
78
80
|
for (var p in b) {
|
|
79
81
|
if (b[strShimHasOwnProperty](p)) {
|
|
@@ -88,7 +90,9 @@ this.Microsoft = this.Microsoft || {};
|
|
|
88
90
|
throwTypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
89
91
|
}
|
|
90
92
|
extendStaticsFn(d, b);
|
|
91
|
-
function __() {
|
|
93
|
+
function __() {
|
|
94
|
+
this.constructor = d;
|
|
95
|
+
}
|
|
92
96
|
d[strShimPrototype] = b === null ? objCreateFn(b) : (__[strShimPrototype] = b[strShimPrototype], new __());
|
|
93
97
|
}
|
|
94
98
|
|
|
@@ -342,11 +346,23 @@ this.Microsoft = this.Microsoft || {};
|
|
|
342
346
|
var strDisabled = "disabled";
|
|
343
347
|
var strDoTeardown = "_doTeardown";
|
|
344
348
|
|
|
349
|
+
var strToISOString = "toISOString";
|
|
350
|
+
var cStrEndsWith = "endsWith";
|
|
351
|
+
var cStrStartsWith = "startsWith";
|
|
352
|
+
var cStrTrim = "trim";
|
|
345
353
|
var strToString = "toString";
|
|
346
354
|
var str__Proto = "__proto__";
|
|
347
355
|
var strConstructor = "constructor";
|
|
348
356
|
var _objDefineProperty$1 = ObjDefineProperty;
|
|
349
357
|
var _objFreeze = ObjClass.freeze;
|
|
358
|
+
ObjClass.seal;
|
|
359
|
+
var _objKeys = ObjClass.keys;
|
|
360
|
+
var StringProto = String[strShimPrototype];
|
|
361
|
+
StringProto[cStrTrim];
|
|
362
|
+
StringProto[cStrEndsWith];
|
|
363
|
+
StringProto[cStrStartsWith];
|
|
364
|
+
var DateProto = Date[strShimPrototype];
|
|
365
|
+
DateProto[strToISOString];
|
|
350
366
|
var _isArray = Array.isArray;
|
|
351
367
|
var _objToString = ObjProto[strToString];
|
|
352
368
|
var _fnToString = ObjHasOwnProperty[strToString];
|
|
@@ -453,6 +469,40 @@ this.Microsoft = this.Microsoft || {};
|
|
|
453
469
|
catch (e) {
|
|
454
470
|
}
|
|
455
471
|
}
|
|
472
|
+
var _objKeysHasDontEnumBug = !({ toString: null }).propertyIsEnumerable("toString");
|
|
473
|
+
var _objKeysDontEnums = [
|
|
474
|
+
"toString",
|
|
475
|
+
"toLocaleString",
|
|
476
|
+
"valueOf",
|
|
477
|
+
"hasOwnProperty",
|
|
478
|
+
"isPrototypeOf",
|
|
479
|
+
"propertyIsEnumerable",
|
|
480
|
+
"constructor"
|
|
481
|
+
];
|
|
482
|
+
function objKeys(obj) {
|
|
483
|
+
var objType = typeof obj;
|
|
484
|
+
if (objType !== strShimFunction && (objType !== strShimObject || obj === null)) {
|
|
485
|
+
throwTypeError("objKeys called on non-object");
|
|
486
|
+
}
|
|
487
|
+
if (!_objKeysHasDontEnumBug && _objKeys) {
|
|
488
|
+
return _objKeys(obj);
|
|
489
|
+
}
|
|
490
|
+
var result = [];
|
|
491
|
+
for (var prop in obj) {
|
|
492
|
+
if (obj && ObjHasOwnProperty.call(obj, prop)) {
|
|
493
|
+
result.push(prop);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
if (_objKeysHasDontEnumBug) {
|
|
497
|
+
var dontEnumsLength = _objKeysDontEnums.length;
|
|
498
|
+
for (var lp = 0; lp < dontEnumsLength; lp++) {
|
|
499
|
+
if (obj && ObjHasOwnProperty.call(obj, _objKeysDontEnums[lp])) {
|
|
500
|
+
result.push(_objKeysDontEnums[lp]);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
return result;
|
|
505
|
+
}
|
|
456
506
|
function objDefineAccessors(target, prop, getProp, setProp) {
|
|
457
507
|
if (_objDefineProperty$1) {
|
|
458
508
|
try {
|
|
@@ -1046,7 +1096,7 @@ this.Microsoft = this.Microsoft || {};
|
|
|
1046
1096
|
}
|
|
1047
1097
|
|
|
1048
1098
|
var _objDefineProperty = ObjDefineProperty;
|
|
1049
|
-
var version = "2.
|
|
1099
|
+
var version = "2.8.0-beta.2203-11";
|
|
1050
1100
|
var instanceName = "." + newId(6);
|
|
1051
1101
|
var _dataUid = 0;
|
|
1052
1102
|
function _createAccessor(target, prop, value) {
|
|
@@ -1117,10 +1167,28 @@ this.Microsoft = this.Microsoft || {};
|
|
|
1117
1167
|
return data;
|
|
1118
1168
|
}
|
|
1119
1169
|
|
|
1170
|
+
var strDoUnload = "_doUnload";
|
|
1120
1171
|
var pluginStateData = createElmNodeData("plugin");
|
|
1121
1172
|
function _getPluginState(plugin) {
|
|
1122
1173
|
return pluginStateData.get(plugin, "state", {}, true);
|
|
1123
1174
|
}
|
|
1175
|
+
function unloadComponents(components, unloadCtx, unloadState, asyncCallback) {
|
|
1176
|
+
var idx = 0;
|
|
1177
|
+
function _doUnload() {
|
|
1178
|
+
while (idx < components.length) {
|
|
1179
|
+
var component = components[idx++];
|
|
1180
|
+
if (component) {
|
|
1181
|
+
var func = component[strDoUnload] || component[strDoTeardown];
|
|
1182
|
+
if (isFunction(func)) {
|
|
1183
|
+
if (func.call(component, unloadCtx, unloadState, _doUnload) === true) {
|
|
1184
|
+
return true;
|
|
1185
|
+
}
|
|
1186
|
+
}
|
|
1187
|
+
}
|
|
1188
|
+
}
|
|
1189
|
+
}
|
|
1190
|
+
return _doUnload();
|
|
1191
|
+
}
|
|
1124
1192
|
|
|
1125
1193
|
var strTelemetryPluginChain = "TelemetryPluginChain";
|
|
1126
1194
|
var strHasRunFlags = "_hasRun";
|
|
@@ -1144,7 +1212,9 @@ this.Microsoft = this.Microsoft || {};
|
|
|
1144
1212
|
var context = {
|
|
1145
1213
|
_next: _moveNext,
|
|
1146
1214
|
ctx: {
|
|
1147
|
-
core: function () {
|
|
1215
|
+
core: function () {
|
|
1216
|
+
return core;
|
|
1217
|
+
},
|
|
1148
1218
|
diagLog: function () {
|
|
1149
1219
|
return safeGetLogger(core, config);
|
|
1150
1220
|
},
|
|
@@ -1639,9 +1709,13 @@ this.Microsoft = this.Microsoft || {};
|
|
|
1639
1709
|
var strOnPrefix = "on";
|
|
1640
1710
|
var strAttachEvent = "attachEvent";
|
|
1641
1711
|
var strAddEventHelper = "addEventListener";
|
|
1712
|
+
var strDetachEvent = "detachEvent";
|
|
1713
|
+
var strRemoveEventListener = "removeEventListener";
|
|
1642
1714
|
var strEvents = "events";
|
|
1643
1715
|
createUniqueNamespace("aiEvtPageHide");
|
|
1644
1716
|
createUniqueNamespace("aiEvtPageShow");
|
|
1717
|
+
var rRemoveEmptyNs = /\.[\.]+/g;
|
|
1718
|
+
var rRemoveTrailingEmptyNs = /[\.]+$/;
|
|
1645
1719
|
var _guid = 1;
|
|
1646
1720
|
var elmNodeData = createElmNodeData("events");
|
|
1647
1721
|
var eventNamespace = /^([^.]*)(?:\.(.+)|)/;
|
|
@@ -1676,10 +1750,10 @@ this.Microsoft = this.Microsoft || {};
|
|
|
1676
1750
|
eventName = (eventName || "") + theNamespace_1;
|
|
1677
1751
|
}
|
|
1678
1752
|
}
|
|
1679
|
-
var parsedEvent = (eventNamespace.exec(eventName) || []);
|
|
1753
|
+
var parsedEvent = (eventNamespace.exec(eventName || "") || []);
|
|
1680
1754
|
return {
|
|
1681
1755
|
type: parsedEvent[1],
|
|
1682
|
-
ns: ((parsedEvent[2] || "").split(".").sort()).join(".")
|
|
1756
|
+
ns: ((parsedEvent[2] || "").replace(rRemoveEmptyNs, ".").replace(rRemoveTrailingEmptyNs, "").split(".").sort()).join(".")
|
|
1683
1757
|
};
|
|
1684
1758
|
}
|
|
1685
1759
|
function _getRegisteredEvents(target, evtName, addDefault) {
|
|
@@ -1691,6 +1765,16 @@ this.Microsoft = this.Microsoft || {};
|
|
|
1691
1765
|
}
|
|
1692
1766
|
return registeredEvents;
|
|
1693
1767
|
}
|
|
1768
|
+
function _doDetach(obj, evtName, handlerRef, useCapture) {
|
|
1769
|
+
if (obj && evtName && evtName.type) {
|
|
1770
|
+
if (obj[strRemoveEventListener]) {
|
|
1771
|
+
obj[strRemoveEventListener](evtName.type, handlerRef, useCapture);
|
|
1772
|
+
}
|
|
1773
|
+
else if (obj[strDetachEvent]) {
|
|
1774
|
+
obj[strDetachEvent](strOnPrefix + evtName.type, handlerRef);
|
|
1775
|
+
}
|
|
1776
|
+
}
|
|
1777
|
+
}
|
|
1694
1778
|
function _doAttach(obj, evtName, handlerRef, useCapture) {
|
|
1695
1779
|
var result = false;
|
|
1696
1780
|
if (obj && evtName && evtName.type && handlerRef) {
|
|
@@ -1705,6 +1789,50 @@ this.Microsoft = this.Microsoft || {};
|
|
|
1705
1789
|
}
|
|
1706
1790
|
return result;
|
|
1707
1791
|
}
|
|
1792
|
+
function _doUnregister(target, events, evtName, unRegFn) {
|
|
1793
|
+
var idx = events.length;
|
|
1794
|
+
while (idx--) {
|
|
1795
|
+
var theEvent = events[idx];
|
|
1796
|
+
if (theEvent) {
|
|
1797
|
+
if (!evtName.ns || evtName.ns === theEvent.evtName.ns) {
|
|
1798
|
+
if (!unRegFn || unRegFn(theEvent)) {
|
|
1799
|
+
_doDetach(target, theEvent.evtName, theEvent.handler, theEvent.capture);
|
|
1800
|
+
events.splice(idx, 1);
|
|
1801
|
+
}
|
|
1802
|
+
}
|
|
1803
|
+
}
|
|
1804
|
+
}
|
|
1805
|
+
}
|
|
1806
|
+
function _unregisterEvents(target, evtName, unRegFn) {
|
|
1807
|
+
if (evtName.type) {
|
|
1808
|
+
_doUnregister(target, _getRegisteredEvents(target, evtName.type), evtName, unRegFn);
|
|
1809
|
+
}
|
|
1810
|
+
else {
|
|
1811
|
+
var eventCache = elmNodeData.get(target, strEvents, {});
|
|
1812
|
+
objForEachKey(eventCache, function (evtType, events) {
|
|
1813
|
+
_doUnregister(target, events, evtName, unRegFn);
|
|
1814
|
+
});
|
|
1815
|
+
if (objKeys(eventCache).length === 0) {
|
|
1816
|
+
elmNodeData.kill(target, strEvents);
|
|
1817
|
+
}
|
|
1818
|
+
}
|
|
1819
|
+
}
|
|
1820
|
+
function mergeEvtNamespace(theNamespace, namespaces) {
|
|
1821
|
+
var newNamespaces;
|
|
1822
|
+
if (namespaces) {
|
|
1823
|
+
if (isArray(namespaces)) {
|
|
1824
|
+
newNamespaces = [theNamespace].concat(namespaces);
|
|
1825
|
+
}
|
|
1826
|
+
else {
|
|
1827
|
+
newNamespaces = [theNamespace, namespaces];
|
|
1828
|
+
}
|
|
1829
|
+
newNamespaces = (_getEvtNamespace("xx", newNamespaces).ns).split(".");
|
|
1830
|
+
}
|
|
1831
|
+
else {
|
|
1832
|
+
newNamespaces = theNamespace;
|
|
1833
|
+
}
|
|
1834
|
+
return newNamespaces;
|
|
1835
|
+
}
|
|
1708
1836
|
function eventOn(target, eventName, handlerRef, evtNamespace, useCapture) {
|
|
1709
1837
|
if (useCapture === void 0) { useCapture = false; }
|
|
1710
1838
|
var result = false;
|
|
@@ -1727,9 +1855,26 @@ this.Microsoft = this.Microsoft || {};
|
|
|
1727
1855
|
}
|
|
1728
1856
|
return result;
|
|
1729
1857
|
}
|
|
1730
|
-
function
|
|
1858
|
+
function eventOff(target, eventName, handlerRef, evtNamespace, useCapture) {
|
|
1731
1859
|
if (useCapture === void 0) { useCapture = false; }
|
|
1732
|
-
|
|
1860
|
+
if (target) {
|
|
1861
|
+
try {
|
|
1862
|
+
var evtName_1 = _getEvtNamespace(eventName, evtNamespace);
|
|
1863
|
+
var found_1 = false;
|
|
1864
|
+
_unregisterEvents(target, evtName_1, function (regEvent) {
|
|
1865
|
+
if ((evtName_1.ns && !handlerRef) || regEvent.handler === handlerRef) {
|
|
1866
|
+
found_1 = true;
|
|
1867
|
+
return true;
|
|
1868
|
+
}
|
|
1869
|
+
return false;
|
|
1870
|
+
});
|
|
1871
|
+
if (!found_1) {
|
|
1872
|
+
_doDetach(target, evtName_1, handlerRef, useCapture);
|
|
1873
|
+
}
|
|
1874
|
+
}
|
|
1875
|
+
catch (e) {
|
|
1876
|
+
}
|
|
1877
|
+
}
|
|
1733
1878
|
}
|
|
1734
1879
|
|
|
1735
1880
|
var LoggingSeverity = createEnumStyle({
|
|
@@ -2115,188 +2260,200 @@ this.Microsoft = this.Microsoft || {};
|
|
|
2115
2260
|
}
|
|
2116
2261
|
|
|
2117
2262
|
var WebEvent = /** @class */ (function () {
|
|
2118
|
-
function WebEvent(
|
|
2119
|
-
this
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
if (this._pageTagsCallback) {
|
|
2149
|
-
this._pageTags = extend(true, this._pageTags, this._pageTagsCallback());
|
|
2150
|
-
}
|
|
2151
|
-
if (isValueAssigned(overrideValues.pageTags)) {
|
|
2152
|
-
this._pageTags = extend(true, this._pageTags, overrideValues.pageTags);
|
|
2153
|
-
}
|
|
2154
|
-
if (this._metaTags) {
|
|
2155
|
-
this._pageTags.metaTags = {};
|
|
2156
|
-
for (var metaTag in this._metaTags) {
|
|
2157
|
-
if (metaTag != "behavior" && metaTag != "market" && metaTag != "pageType") {
|
|
2158
|
-
this._pageTags.metaTags[metaTag] = this._metaTags[metaTag];
|
|
2263
|
+
function WebEvent(clickAnalyticsPlugin, config, contentHandler, pageTagsCallback, metaTags, traceLogger) {
|
|
2264
|
+
dynamicProto(WebEvent, this, function (_self) {
|
|
2265
|
+
_initDefaults();
|
|
2266
|
+
function _initDefaults() {
|
|
2267
|
+
_self._pageTags = {};
|
|
2268
|
+
_self._clickAnalyticsPlugin = clickAnalyticsPlugin;
|
|
2269
|
+
_self._config = config;
|
|
2270
|
+
_self._contentHandler = contentHandler;
|
|
2271
|
+
_self._pageTagsCallback = pageTagsCallback;
|
|
2272
|
+
_self._metaTags = metaTags;
|
|
2273
|
+
_self._traceLogger = traceLogger;
|
|
2274
|
+
}
|
|
2275
|
+
_self.setBasicProperties = function (event, overrideValues) {
|
|
2276
|
+
if (!isValueAssigned(event.name)) {
|
|
2277
|
+
event.pageName = getPageName(_self._config, overrideValues);
|
|
2278
|
+
}
|
|
2279
|
+
if (!isValueAssigned(event.uri) && hasWindow) {
|
|
2280
|
+
event.uri = getUri(_self._config, getLocation());
|
|
2281
|
+
}
|
|
2282
|
+
};
|
|
2283
|
+
_self.setCommonProperties = function (event, overrideValues) {
|
|
2284
|
+
_self.setBasicProperties(event, overrideValues);
|
|
2285
|
+
_self._setPageTags(event, overrideValues);
|
|
2286
|
+
_self._pageTypeMetaTag = _getMetaData(_self._metaTags, _self._config.coreData, "pageType");
|
|
2287
|
+
_self._behaviorMetaTag = _getMetaData(_self._metaTags, _self._config.coreData, "behavior");
|
|
2288
|
+
if (isValueAssigned(overrideValues.pageType)) {
|
|
2289
|
+
event.pageType = overrideValues.pageType;
|
|
2290
|
+
}
|
|
2291
|
+
if (isValueAssigned(_self._pageTypeMetaTag) && !isValueAssigned(event.pageType)) {
|
|
2292
|
+
event.pageType = _self._pageTypeMetaTag;
|
|
2159
2293
|
}
|
|
2294
|
+
};
|
|
2295
|
+
_self._setPageTags = function (event, overrideValues) {
|
|
2296
|
+
if (_self._pageTagsCallback) {
|
|
2297
|
+
_self._pageTags = extend(true, _self._pageTags, _self._pageTagsCallback());
|
|
2298
|
+
}
|
|
2299
|
+
if (isValueAssigned(overrideValues.pageTags)) {
|
|
2300
|
+
_self._pageTags = extend(true, _self._pageTags, overrideValues.pageTags);
|
|
2301
|
+
}
|
|
2302
|
+
if (_self._metaTags) {
|
|
2303
|
+
_self._pageTags.metaTags = {};
|
|
2304
|
+
for (var metaTag in _self._metaTags) {
|
|
2305
|
+
if (metaTag != "behavior" && metaTag != "market" && metaTag != "pageType") {
|
|
2306
|
+
_self._pageTags.metaTags[metaTag] = _self._metaTags[metaTag];
|
|
2307
|
+
}
|
|
2308
|
+
}
|
|
2309
|
+
}
|
|
2310
|
+
event.properties = event.properties || {};
|
|
2311
|
+
event.properties["pageTags"] = _self._pageTags;
|
|
2312
|
+
};
|
|
2313
|
+
_self._getBehavior = function (overrideValues) {
|
|
2314
|
+
var behavior;
|
|
2315
|
+
if (overrideValues && isValueAssigned(overrideValues.behavior)) {
|
|
2316
|
+
behavior = overrideValues.behavior;
|
|
2317
|
+
}
|
|
2318
|
+
else if (isValueAssigned(_self._behaviorMetaTag)) {
|
|
2319
|
+
behavior = _self._behaviorMetaTag;
|
|
2320
|
+
}
|
|
2321
|
+
return _self._getValidBehavior(behavior);
|
|
2322
|
+
};
|
|
2323
|
+
_self._getValidBehavior = function (behavior) {
|
|
2324
|
+
return _self._config.behaviorValidator(behavior);
|
|
2325
|
+
};
|
|
2326
|
+
_self._doUnload = function (unloadCtx, unloadState, asyncCallback) {
|
|
2327
|
+
_initDefaults();
|
|
2328
|
+
};
|
|
2329
|
+
function _getMetaData(metaTags, coreData, metaTagName) {
|
|
2330
|
+
if (coreData && coreData[metaTagName]) {
|
|
2331
|
+
return coreData[metaTagName];
|
|
2332
|
+
}
|
|
2333
|
+
if (metaTags) {
|
|
2334
|
+
return metaTags[metaTagName];
|
|
2335
|
+
}
|
|
2336
|
+
return "";
|
|
2160
2337
|
}
|
|
2161
|
-
}
|
|
2162
|
-
|
|
2163
|
-
event.properties["pageTags"] = this._pageTags;
|
|
2164
|
-
};
|
|
2165
|
-
WebEvent.prototype._getBehavior = function (overrideValues) {
|
|
2166
|
-
var behavior;
|
|
2167
|
-
if (overrideValues && isValueAssigned(overrideValues.behavior)) {
|
|
2168
|
-
behavior = overrideValues.behavior;
|
|
2169
|
-
}
|
|
2170
|
-
else if (isValueAssigned(this._behaviorMetaTag)) {
|
|
2171
|
-
behavior = this._behaviorMetaTag;
|
|
2172
|
-
}
|
|
2173
|
-
return this._getValidBehavior(behavior);
|
|
2174
|
-
};
|
|
2175
|
-
WebEvent.prototype._getValidBehavior = function (behavior) {
|
|
2176
|
-
return this._config.behaviorValidator(behavior);
|
|
2177
|
-
};
|
|
2178
|
-
WebEvent.prototype._getMetaData = function (metaTags, coreData, metaTagName) {
|
|
2179
|
-
if (coreData && coreData[metaTagName]) {
|
|
2180
|
-
return coreData[metaTagName];
|
|
2181
|
-
}
|
|
2182
|
-
else if (metaTags) {
|
|
2183
|
-
return metaTags[metaTagName];
|
|
2184
|
-
}
|
|
2185
|
-
return "";
|
|
2186
|
-
};
|
|
2338
|
+
});
|
|
2339
|
+
}
|
|
2187
2340
|
return WebEvent;
|
|
2188
2341
|
}());
|
|
2189
2342
|
|
|
2190
2343
|
var PageAction = /** @class */ (function (_super) {
|
|
2191
2344
|
__extendsFn(PageAction, _super);
|
|
2192
|
-
function PageAction() {
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2345
|
+
function PageAction(clickAnalyticsPlugin, config, contentHandler, pageTagsCallback, metaTags, traceLogger) {
|
|
2346
|
+
var _this = _super.call(this, clickAnalyticsPlugin, config, contentHandler, pageTagsCallback, metaTags, traceLogger) || this;
|
|
2347
|
+
dynamicProto(PageAction, _this, function (_self, _base) {
|
|
2348
|
+
_self.trackPageAction = function (pageActionEvent, properties) {
|
|
2349
|
+
var ext = {};
|
|
2350
|
+
ext["web"] = {};
|
|
2351
|
+
var event = {
|
|
2352
|
+
name: "Microsoft.ApplicationInsights.{0}.Event",
|
|
2353
|
+
baseType: "EventData",
|
|
2354
|
+
ext: ext,
|
|
2355
|
+
data: {},
|
|
2356
|
+
baseData: {}
|
|
2357
|
+
};
|
|
2358
|
+
_populateEventDataIfPresent(event.baseData, "name", pageActionEvent.name);
|
|
2359
|
+
_populateEventDataIfPresent(event.data, "baseTypeSource", "ClickEvent");
|
|
2360
|
+
_populateEventDataIfPresent(event.data, "uri", pageActionEvent.uri);
|
|
2361
|
+
_populateEventDataIfPresent(event.data, "pageType", pageActionEvent.pageType);
|
|
2362
|
+
_populateEventDataIfPresent(event.data, "properties", pageActionEvent.properties);
|
|
2363
|
+
_populateEventDataIfPresent(event.data, "actionType", pageActionEvent.actionType);
|
|
2364
|
+
_populateEventDataIfPresent(event.data, "behavior", pageActionEvent.behavior);
|
|
2365
|
+
_populateEventDataIfPresent(event.data, "clickCoordinates", pageActionEvent.clickCoordinates);
|
|
2366
|
+
_populateEventDataIfPresent(event.data, "content", pageActionEvent.content);
|
|
2367
|
+
_populateEventDataIfPresent(event.data, "targetUri", pageActionEvent.targetUri);
|
|
2368
|
+
_populateEventDataIfPresent(event.data, "timeToAction", pageActionEvent.timeToAction);
|
|
2369
|
+
_populateEventDataIfPresent(event.data, "refUri", pageActionEvent.refUri);
|
|
2370
|
+
_populateEventDataIfPresent(event.data, "pageName", pageActionEvent.pageName);
|
|
2371
|
+
_populateEventDataIfPresent(event.data, "parentId", pageActionEvent.parentId);
|
|
2372
|
+
if (properties) {
|
|
2373
|
+
objForEachKey(properties, function (property, value) {
|
|
2374
|
+
if (!event.data[property]) {
|
|
2375
|
+
_populateEventDataIfPresent(event.data, property, value);
|
|
2376
|
+
}
|
|
2377
|
+
});
|
|
2224
2378
|
}
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2232
|
-
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
-
|
|
2246
|
-
|
|
2247
|
-
|
|
2248
|
-
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2379
|
+
_self._clickAnalyticsPlugin.core.track(event);
|
|
2380
|
+
};
|
|
2381
|
+
_self.capturePageAction = function (element, overrideValues, customProperties, isRightClick) {
|
|
2382
|
+
overrideValues = !isValueAssigned(overrideValues) ? {} : overrideValues;
|
|
2383
|
+
var pageActionEvent = { name: "" };
|
|
2384
|
+
var pageActionProperties = isValueAssigned(customProperties) ? customProperties : {};
|
|
2385
|
+
_self.setCommonProperties(pageActionEvent, overrideValues);
|
|
2386
|
+
pageActionEvent.behavior = _self._getBehavior(overrideValues);
|
|
2387
|
+
var elementContent = {};
|
|
2388
|
+
if (isRightClick) {
|
|
2389
|
+
pageActionEvent.behavior = _self._config.defaultRightClickBhvr;
|
|
2390
|
+
}
|
|
2391
|
+
if (element) {
|
|
2392
|
+
pageActionEvent.targetUri = getClickTarget(element);
|
|
2393
|
+
elementContent = _self._contentHandler.getElementContent(element);
|
|
2394
|
+
if (elementContent.bhvr && !isValueAssigned(overrideValues.behavior)) {
|
|
2395
|
+
var currentBehavior = extractFieldFromObject(elementContent, "bhvr");
|
|
2396
|
+
pageActionEvent.behavior = _self._getValidBehavior(currentBehavior);
|
|
2397
|
+
}
|
|
2398
|
+
if (!isValueAssigned(elementContent.id) && !isValueAssigned(elementContent.contentName)) {
|
|
2399
|
+
_self._traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Missing attributes id or contentName in click event. Click event information will still be collected!");
|
|
2400
|
+
}
|
|
2401
|
+
}
|
|
2402
|
+
pageActionEvent.name = elementContent.id || elementContent.contentName || strNotSpecified;
|
|
2403
|
+
pageActionEvent.parentId = elementContent.parentid || elementContent.parentName || strNotSpecified;
|
|
2404
|
+
if (isValueAssigned(overrideValues.actionType)) {
|
|
2405
|
+
pageActionEvent.actionType = overrideValues.actionType;
|
|
2406
|
+
}
|
|
2407
|
+
if (isValueAssigned(overrideValues.clickCoordinateX) && isValueAssigned(overrideValues.clickCoordinateY)) {
|
|
2408
|
+
pageActionEvent.clickCoordinates = overrideValues.clickCoordinateX + "X" + overrideValues.clickCoordinateY;
|
|
2409
|
+
}
|
|
2410
|
+
_sanitizePageActionEventContent(elementContent);
|
|
2411
|
+
pageActionEvent.content = bracketIt(JSON.stringify(extend(elementContent, overrideValues && overrideValues.contentTags ? overrideValues.contentTags : {})));
|
|
2412
|
+
pageActionEvent.timeToAction = _getTimeToClick();
|
|
2413
|
+
pageActionEvent.refUri = isValueAssigned(overrideValues.refUri) ? overrideValues.refUri : _self._config.coreData.referrerUri;
|
|
2414
|
+
if (_isUndefinedEvent(pageActionEvent)) {
|
|
2415
|
+
return;
|
|
2416
|
+
}
|
|
2417
|
+
_self.trackPageAction(pageActionEvent, pageActionProperties);
|
|
2418
|
+
};
|
|
2419
|
+
function _getTimeToClick() {
|
|
2420
|
+
var perf = getPerformance();
|
|
2421
|
+
if (perf && perf.timing) {
|
|
2422
|
+
var isNavigationStart = perf.timing.navigationStart;
|
|
2423
|
+
if (isNavigationStart && isNavigationStart !== 0) {
|
|
2424
|
+
return new Date().getTime() - isNavigationStart;
|
|
2425
|
+
}
|
|
2426
|
+
}
|
|
2427
|
+
return -1;
|
|
2272
2428
|
}
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
if (isValueAssigned(value)) {
|
|
2278
|
-
obj[property] = value;
|
|
2279
|
-
}
|
|
2280
|
-
};
|
|
2281
|
-
PageAction.prototype._sanitizePageActionEventContent = function (pageActionContent) {
|
|
2282
|
-
if (pageActionContent) {
|
|
2283
|
-
delete pageActionContent.id;
|
|
2284
|
-
delete pageActionContent.parentid;
|
|
2285
|
-
delete pageActionContent.parentname;
|
|
2286
|
-
if (this._config && this._config.dataTags && isValueAssigned(this._config.dataTags.parentDataTag)) {
|
|
2287
|
-
delete pageActionContent[this._config.dataTags.parentDataTag];
|
|
2429
|
+
function _populateEventDataIfPresent(obj, property, value) {
|
|
2430
|
+
if (isValueAssigned(value)) {
|
|
2431
|
+
obj[property] = value;
|
|
2432
|
+
}
|
|
2288
2433
|
}
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2296
|
-
|
|
2297
|
-
|
|
2298
|
-
|
|
2299
|
-
|
|
2434
|
+
function _sanitizePageActionEventContent(pageActionContent) {
|
|
2435
|
+
if (pageActionContent) {
|
|
2436
|
+
delete pageActionContent.id;
|
|
2437
|
+
delete pageActionContent.parentid;
|
|
2438
|
+
delete pageActionContent.parentname;
|
|
2439
|
+
if (_self._config && _self._config.dataTags && isValueAssigned(_self._config.dataTags.parentDataTag)) {
|
|
2440
|
+
delete pageActionContent[_self._config.dataTags.parentDataTag];
|
|
2441
|
+
}
|
|
2442
|
+
}
|
|
2443
|
+
}
|
|
2444
|
+
function _isUndefinedEvent(pageActionEvent) {
|
|
2445
|
+
if (_self._config.dropInvalidEvents) {
|
|
2446
|
+
if (pageActionEvent.name === strNotSpecified
|
|
2447
|
+
&& pageActionEvent.parentId === strNotSpecified
|
|
2448
|
+
&& pageActionEvent.content === "[{}]") {
|
|
2449
|
+
return true;
|
|
2450
|
+
}
|
|
2451
|
+
}
|
|
2452
|
+
return false;
|
|
2453
|
+
}
|
|
2454
|
+
});
|
|
2455
|
+
return _this;
|
|
2456
|
+
}
|
|
2300
2457
|
return PageAction;
|
|
2301
2458
|
}(WebEvent));
|
|
2302
2459
|
|
|
@@ -2319,77 +2476,83 @@ this.Microsoft = this.Microsoft || {};
|
|
|
2319
2476
|
this._config = _config;
|
|
2320
2477
|
this._pageAction = _pageAction;
|
|
2321
2478
|
this._traceLogger = _traceLogger;
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
}
|
|
2336
|
-
};
|
|
2337
|
-
AutoCaptureHandler.prototype.capturePageAction = function (element, overrideValues, customProperties, isRightClick) {
|
|
2338
|
-
var donotTrackTag = this._config.dataTags.customDataPrefix + this._config.dataTags.dntDataTag;
|
|
2339
|
-
if (!isElementDnt(element, donotTrackTag)) {
|
|
2340
|
-
this._pageAction.capturePageAction(element, overrideValues, customProperties, isRightClick);
|
|
2341
|
-
}
|
|
2342
|
-
};
|
|
2343
|
-
AutoCaptureHandler.prototype._processClick = function (clickEvent) {
|
|
2344
|
-
var clickCaptureElements = { A: true, BUTTON: true, AREA: true, INPUT: true };
|
|
2345
|
-
var win = getWindow();
|
|
2346
|
-
if (isNullOrUndefined(clickEvent) && win) {
|
|
2347
|
-
clickEvent = win.event;
|
|
2348
|
-
}
|
|
2349
|
-
if (clickEvent) {
|
|
2350
|
-
var element = clickEvent.srcElement || clickEvent.target;
|
|
2351
|
-
var overrideValues = {
|
|
2352
|
-
clickCoordinateX: clickEvent.pageX,
|
|
2353
|
-
clickCoordinateY: clickEvent.pageY
|
|
2354
|
-
};
|
|
2355
|
-
var isRightClickObj = isRightClick(clickEvent);
|
|
2356
|
-
if (isRightClickObj) {
|
|
2357
|
-
overrideValues.actionType = ActionType.CLICKRIGHT;
|
|
2358
|
-
}
|
|
2359
|
-
else if (isLeftClick(clickEvent)) {
|
|
2360
|
-
overrideValues.actionType = ActionType.CLICKLEFT;
|
|
2361
|
-
}
|
|
2362
|
-
else if (isKeyboardEnter(clickEvent)) {
|
|
2363
|
-
overrideValues.actionType = ActionType.KEYBOARDENTER;
|
|
2364
|
-
}
|
|
2365
|
-
else if (isKeyboardSpace(clickEvent)) {
|
|
2366
|
-
overrideValues.actionType = ActionType.KEYBOARDSPACE;
|
|
2367
|
-
}
|
|
2368
|
-
else if (isMiddleClick(clickEvent)) {
|
|
2369
|
-
overrideValues.actionType = ActionType.CLICKMIDDLE;
|
|
2370
|
-
}
|
|
2371
|
-
else {
|
|
2372
|
-
return;
|
|
2373
|
-
}
|
|
2374
|
-
while (element && element.tagName) {
|
|
2375
|
-
if (element.control && clickCaptureElements[element.control.tagName.toUpperCase()]) {
|
|
2376
|
-
element = element.control;
|
|
2377
|
-
}
|
|
2378
|
-
var tagNameUpperCased = element.tagName.toUpperCase();
|
|
2379
|
-
if (!clickCaptureElements[tagNameUpperCased]) {
|
|
2380
|
-
element = element.parentElement || element.parentNode;
|
|
2381
|
-
continue;
|
|
2479
|
+
var _evtNamespace = mergeEvtNamespace(createUniqueNamespace("AutoCaptureHandler"), _analyticsPlugin._evtNamespace);
|
|
2480
|
+
dynamicProto(AutoCaptureHandler, this, function (_self) {
|
|
2481
|
+
_self.click = function () {
|
|
2482
|
+
var win = getWindow();
|
|
2483
|
+
var doc = getDocument();
|
|
2484
|
+
if (win) {
|
|
2485
|
+
var event_1 = (navigator.appVersion.indexOf("MSIE") !== -1) ? "click" : "mousedown";
|
|
2486
|
+
eventOn(win, event_1, _processClick, _evtNamespace);
|
|
2487
|
+
eventOn(win, "keyup", _processClick, _evtNamespace);
|
|
2488
|
+
}
|
|
2489
|
+
else if (doc) {
|
|
2490
|
+
eventOn(doc, "click", _processClick, _evtNamespace);
|
|
2491
|
+
eventOn(doc, "keyup", _processClick, _evtNamespace);
|
|
2382
2492
|
}
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2493
|
+
};
|
|
2494
|
+
_self._doUnload = function (unloadCtx, unloadState, asyncCallback) {
|
|
2495
|
+
eventOff(getWindow(), null, null, _evtNamespace);
|
|
2496
|
+
eventOff(getDocument(), null, null, _evtNamespace);
|
|
2497
|
+
};
|
|
2498
|
+
function _capturePageAction(element, overrideValues, customProperties, isRightClick) {
|
|
2499
|
+
var donotTrackTag = _self._config.dataTags.customDataPrefix + _self._config.dataTags.dntDataTag;
|
|
2500
|
+
if (!isElementDnt(element, donotTrackTag)) {
|
|
2501
|
+
_self._pageAction.capturePageAction(element, overrideValues, customProperties, isRightClick);
|
|
2502
|
+
}
|
|
2503
|
+
}
|
|
2504
|
+
function _processClick(clickEvent) {
|
|
2505
|
+
var clickCaptureElements = { A: true, BUTTON: true, AREA: true, INPUT: true };
|
|
2506
|
+
var win = getWindow();
|
|
2507
|
+
if (isNullOrUndefined(clickEvent) && win) {
|
|
2508
|
+
clickEvent = win.event;
|
|
2509
|
+
}
|
|
2510
|
+
if (clickEvent) {
|
|
2511
|
+
var element = clickEvent.srcElement || clickEvent.target;
|
|
2512
|
+
var overrideValues = {
|
|
2513
|
+
clickCoordinateX: clickEvent.pageX,
|
|
2514
|
+
clickCoordinateY: clickEvent.pageY
|
|
2515
|
+
};
|
|
2516
|
+
var isRightClickObj = isRightClick(clickEvent);
|
|
2517
|
+
if (isRightClickObj) {
|
|
2518
|
+
overrideValues.actionType = ActionType.CLICKRIGHT;
|
|
2519
|
+
}
|
|
2520
|
+
else if (isLeftClick(clickEvent)) {
|
|
2521
|
+
overrideValues.actionType = ActionType.CLICKLEFT;
|
|
2522
|
+
}
|
|
2523
|
+
else if (isKeyboardEnter(clickEvent)) {
|
|
2524
|
+
overrideValues.actionType = ActionType.KEYBOARDENTER;
|
|
2525
|
+
}
|
|
2526
|
+
else if (isKeyboardSpace(clickEvent)) {
|
|
2527
|
+
overrideValues.actionType = ActionType.KEYBOARDSPACE;
|
|
2528
|
+
}
|
|
2529
|
+
else if (isMiddleClick(clickEvent)) {
|
|
2530
|
+
overrideValues.actionType = ActionType.CLICKMIDDLE;
|
|
2531
|
+
}
|
|
2532
|
+
else {
|
|
2533
|
+
return;
|
|
2534
|
+
}
|
|
2535
|
+
while (element && element.tagName) {
|
|
2536
|
+
if (element.control && clickCaptureElements[element.control.tagName.toUpperCase()]) {
|
|
2537
|
+
element = element.control;
|
|
2538
|
+
}
|
|
2539
|
+
var tagNameUpperCased = element.tagName.toUpperCase();
|
|
2540
|
+
if (!clickCaptureElements[tagNameUpperCased]) {
|
|
2541
|
+
element = element.parentElement || element.parentNode;
|
|
2542
|
+
continue;
|
|
2543
|
+
}
|
|
2544
|
+
else {
|
|
2545
|
+
var sendEvent = tagNameUpperCased === "INPUT" ? clickCaptureInputTypes[element.type.toUpperCase()] : true;
|
|
2546
|
+
if (sendEvent) {
|
|
2547
|
+
_capturePageAction(element, overrideValues, {}, isRightClickObj);
|
|
2548
|
+
}
|
|
2549
|
+
break;
|
|
2550
|
+
}
|
|
2387
2551
|
}
|
|
2388
|
-
break;
|
|
2389
2552
|
}
|
|
2390
2553
|
}
|
|
2391
|
-
}
|
|
2392
|
-
}
|
|
2554
|
+
});
|
|
2555
|
+
}
|
|
2393
2556
|
return AutoCaptureHandler;
|
|
2394
2557
|
}());
|
|
2395
2558
|
|
|
@@ -2398,285 +2561,318 @@ this.Microsoft = this.Microsoft || {};
|
|
|
2398
2561
|
function DomContentHandler(_config, _traceLogger) {
|
|
2399
2562
|
this._config = _config;
|
|
2400
2563
|
this._traceLogger = _traceLogger;
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2564
|
+
dynamicProto(DomContentHandler, this, function (_self) {
|
|
2565
|
+
_self.getMetadata = function () {
|
|
2566
|
+
var dataTags = (_self._config || {}).dataTags;
|
|
2567
|
+
var metaTags = {};
|
|
2568
|
+
if (hasDocument) {
|
|
2569
|
+
metaTags = isValueAssigned(dataTags.metaDataPrefix) ? _getMetaDataFromDOM(dataTags.captureAllMetaDataContent, dataTags.metaDataPrefix, false) :
|
|
2570
|
+
_getMetaDataFromDOM(dataTags.captureAllMetaDataContent, "", false);
|
|
2571
|
+
}
|
|
2572
|
+
return metaTags;
|
|
2573
|
+
};
|
|
2574
|
+
_self.getElementContent = function (element) {
|
|
2575
|
+
if (!element) {
|
|
2576
|
+
return {};
|
|
2577
|
+
}
|
|
2578
|
+
var dataTags = (_self._config || {}).dataTags;
|
|
2579
|
+
var elementContent = {};
|
|
2580
|
+
var biBlobValue;
|
|
2581
|
+
var parentDataTagPrefix;
|
|
2582
|
+
var dataTagPrefix = dataTags.customDataPrefix;
|
|
2583
|
+
var aiBlobAttributeTag = dataTagPrefix + dataTags.aiBlobAttributeTag;
|
|
2584
|
+
if (isValueAssigned(dataTags.parentDataTag)) {
|
|
2585
|
+
parentDataTagPrefix = dataTagPrefix + dataTags.parentDataTag;
|
|
2586
|
+
}
|
|
2587
|
+
if (!_isTracked(element, dataTagPrefix, aiBlobAttributeTag)) {
|
|
2588
|
+
biBlobValue = element.getAttribute(aiBlobAttributeTag);
|
|
2589
|
+
if (biBlobValue) {
|
|
2590
|
+
try {
|
|
2591
|
+
elementContent = JSON.parse(biBlobValue);
|
|
2592
|
+
}
|
|
2593
|
+
catch (e) {
|
|
2594
|
+
_self._traceLogger.throwInternal(LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.CannotParseAiBlobValue, "Can not parse " + biBlobValue);
|
|
2595
|
+
}
|
|
2596
|
+
}
|
|
2597
|
+
else {
|
|
2598
|
+
elementContent = extend(elementContent, _populateElementContent(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag));
|
|
2599
|
+
}
|
|
2427
2600
|
}
|
|
2428
|
-
|
|
2429
|
-
|
|
2601
|
+
else {
|
|
2602
|
+
elementContent = extend(elementContent, _populateElementContentwithDataTag(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag));
|
|
2430
2603
|
}
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
};
|
|
2445
|
-
DomContentHandler.prototype._captureElementContentWithDataTag = function (contentElement, elementContent, dataTagPrefix) {
|
|
2446
|
-
for (var i = 0, attrib; i < contentElement.attributes.length; i++) {
|
|
2447
|
-
attrib = contentElement.attributes[i];
|
|
2448
|
-
if (attrib.name.indexOf(dataTagPrefix) !== 0) {
|
|
2449
|
-
continue;
|
|
2450
|
-
}
|
|
2451
|
-
var attribName = attrib.name.replace(dataTagPrefix, "");
|
|
2452
|
-
elementContent[attribName] = attrib.value;
|
|
2453
|
-
}
|
|
2454
|
-
};
|
|
2455
|
-
DomContentHandler.prototype._walkUpDomChainCaptureData = function (el, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
|
|
2456
|
-
var element = el;
|
|
2457
|
-
var parentDataTagFound = false;
|
|
2458
|
-
var elementLevelFlag = false;
|
|
2459
|
-
while (!isNullOrUndefined(element) && !isNullOrUndefined(element.attributes)) {
|
|
2460
|
-
var attributes = element.attributes;
|
|
2461
|
-
for (var i = 0; i < attributes.length; i++) {
|
|
2462
|
-
var attrib = attributes[i];
|
|
2463
|
-
if (attrib.name.indexOf(dataTagPrefix) !== 0) {
|
|
2464
|
-
continue;
|
|
2465
|
-
}
|
|
2466
|
-
if (attrib.name.indexOf(parentDataTagPrefix) === 0) {
|
|
2467
|
-
parentDataTagFound = true;
|
|
2468
|
-
}
|
|
2469
|
-
if (attrib.name.indexOf(aiBlobAttributeTag) === 0) {
|
|
2470
|
-
continue;
|
|
2471
|
-
}
|
|
2472
|
-
var attribName = attrib.name.replace(dataTagPrefix, "");
|
|
2473
|
-
if (elementLevelFlag && attribName === "id")
|
|
2474
|
-
continue;
|
|
2475
|
-
if (!isValueAssigned(elementContent[attribName])) {
|
|
2604
|
+
removeInvalidElements(elementContent);
|
|
2605
|
+
if (parentDataTagPrefix) {
|
|
2606
|
+
elementContent = extend(elementContent, _getParentDetails(element, elementContent, dataTagPrefix, aiBlobAttributeTag));
|
|
2607
|
+
}
|
|
2608
|
+
return elementContent;
|
|
2609
|
+
};
|
|
2610
|
+
function _captureElementContentWithDataTag(contentElement, elementContent, dataTagPrefix) {
|
|
2611
|
+
for (var i = 0, attrib; i < contentElement.attributes.length; i++) {
|
|
2612
|
+
attrib = contentElement.attributes[i];
|
|
2613
|
+
if (attrib.name.indexOf(dataTagPrefix) !== 0) {
|
|
2614
|
+
continue;
|
|
2615
|
+
}
|
|
2616
|
+
var attribName = attrib.name.replace(dataTagPrefix, "");
|
|
2476
2617
|
elementContent[attribName] = attrib.value;
|
|
2477
2618
|
}
|
|
2478
2619
|
}
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
|
|
2492
|
-
|
|
2493
|
-
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
if (!element)
|
|
2507
|
-
return elementContent;
|
|
2508
|
-
var htmlContent = this._getHtmlIdAndContentName(element);
|
|
2509
|
-
if (isValueAssigned(parentDataTagPrefix)) {
|
|
2510
|
-
this._walkUpDomChainCaptureData(element, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag);
|
|
2511
|
-
}
|
|
2512
|
-
else {
|
|
2513
|
-
this._captureElementContentWithDataTag(element, elementContent, dataTagPrefix);
|
|
2514
|
-
}
|
|
2515
|
-
if (this._config.dataTags.useDefaultContentNameOrId) {
|
|
2516
|
-
if (!isValueAssigned(elementContent.id)) {
|
|
2517
|
-
elementContent.id = htmlContent.id || "";
|
|
2518
|
-
}
|
|
2519
|
-
elementContent.contentName = htmlContent.contentName || "";
|
|
2520
|
-
}
|
|
2521
|
-
if (!elementContent.id && !elementContent.contentName) {
|
|
2522
|
-
this._traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Invalid content blob. Missing required attributes (id, contentName. " +
|
|
2523
|
-
" Content information will still be collected!");
|
|
2524
|
-
}
|
|
2525
|
-
return elementContent;
|
|
2526
|
-
};
|
|
2527
|
-
DomContentHandler.prototype._getMetaDataFromDOM = function (captureAllMetaDataContent, prefix, removePrefix) {
|
|
2528
|
-
var metaElements;
|
|
2529
|
-
var metaData = {};
|
|
2530
|
-
if (hasDocument) {
|
|
2531
|
-
metaElements = document.querySelectorAll("meta");
|
|
2532
|
-
for (var i = 0; i < metaElements.length; i++) {
|
|
2533
|
-
var meta = metaElements[i];
|
|
2534
|
-
if (meta.name) {
|
|
2535
|
-
if (captureAllMetaDataContent || meta.name.indexOf(prefix) === 0) {
|
|
2536
|
-
var name_1 = removePrefix ? meta.name.replace(prefix, "") : meta.name;
|
|
2537
|
-
metaData[name_1] = meta.content;
|
|
2620
|
+
function _walkUpDomChainCaptureData(el, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
|
|
2621
|
+
var element = el;
|
|
2622
|
+
var parentDataTagFound = false;
|
|
2623
|
+
var elementLevelFlag = false;
|
|
2624
|
+
while (!isNullOrUndefined(element) && !isNullOrUndefined(element.attributes)) {
|
|
2625
|
+
var attributes = element.attributes;
|
|
2626
|
+
for (var i = 0; i < attributes.length; i++) {
|
|
2627
|
+
var attrib = attributes[i];
|
|
2628
|
+
if (attrib.name.indexOf(dataTagPrefix) !== 0) {
|
|
2629
|
+
continue;
|
|
2630
|
+
}
|
|
2631
|
+
if (attrib.name.indexOf(parentDataTagPrefix) === 0) {
|
|
2632
|
+
parentDataTagFound = true;
|
|
2633
|
+
}
|
|
2634
|
+
if (attrib.name.indexOf(aiBlobAttributeTag) === 0) {
|
|
2635
|
+
continue;
|
|
2636
|
+
}
|
|
2637
|
+
var attribName = attrib.name.replace(dataTagPrefix, "");
|
|
2638
|
+
if (elementLevelFlag && attribName === "id") {
|
|
2639
|
+
continue;
|
|
2640
|
+
}
|
|
2641
|
+
if (!isValueAssigned(elementContent[attribName])) {
|
|
2642
|
+
elementContent[attribName] = attrib.value;
|
|
2643
|
+
}
|
|
2644
|
+
}
|
|
2645
|
+
if (parentDataTagFound) {
|
|
2646
|
+
break;
|
|
2538
2647
|
}
|
|
2648
|
+
elementLevelFlag = true;
|
|
2649
|
+
element = element.parentNode;
|
|
2539
2650
|
}
|
|
2540
2651
|
}
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
if (useDefaultContentName === false || !element.tagName) {
|
|
2546
|
-
return "";
|
|
2547
|
-
}
|
|
2548
|
-
var doc = getDocument() || {};
|
|
2549
|
-
var contentName;
|
|
2550
|
-
switch (element.tagName) {
|
|
2551
|
-
case "A":
|
|
2552
|
-
contentName = doc.all ? element.innerText || element.innerHTML : element.text || element.innerHTML;
|
|
2553
|
-
break;
|
|
2554
|
-
case "IMG":
|
|
2555
|
-
case "AREA":
|
|
2556
|
-
contentName = element.alt;
|
|
2557
|
-
break;
|
|
2558
|
-
default:
|
|
2559
|
-
contentName = element.value || element.name || element.alt || element.innerText || element.id;
|
|
2560
|
-
}
|
|
2561
|
-
return contentName.substring(0, MAX_CONTENTNAME_LENGTH);
|
|
2562
|
-
};
|
|
2563
|
-
DomContentHandler.prototype._isTracked = function (element, dataTag, aiBlobAttributeTag) {
|
|
2564
|
-
var attrs = element.attributes;
|
|
2565
|
-
var dataTagFound = false;
|
|
2566
|
-
for (var i = 0; i < attrs.length; i++) {
|
|
2567
|
-
var attributeName = attrs[i].name;
|
|
2568
|
-
if (attributeName === aiBlobAttributeTag) {
|
|
2569
|
-
return false;
|
|
2570
|
-
}
|
|
2571
|
-
else if (attributeName.indexOf(dataTag) === 0) {
|
|
2572
|
-
dataTagFound = true;
|
|
2573
|
-
}
|
|
2574
|
-
}
|
|
2575
|
-
return dataTagFound;
|
|
2576
|
-
};
|
|
2577
|
-
DomContentHandler.prototype._getHtmlIdAndContentName = function (element) {
|
|
2578
|
-
var htmlContent = {};
|
|
2579
|
-
if (!element)
|
|
2580
|
-
return htmlContent;
|
|
2581
|
-
if (this._config.dataTags.useDefaultContentNameOrId) {
|
|
2582
|
-
var customizedContentName = this._config.callback.contentName ? this._config.callback.contentName(element, this._config.dataTags.useDefaultContentNameOrId) : "";
|
|
2583
|
-
var defaultContentName = this._getDefaultContentName(element, this._config.dataTags.useDefaultContentNameOrId);
|
|
2584
|
-
htmlContent = {
|
|
2585
|
-
id: element.id,
|
|
2586
|
-
contentName: customizedContentName || defaultContentName || element.getAttribute("alt")
|
|
2587
|
-
};
|
|
2588
|
-
}
|
|
2589
|
-
return htmlContent;
|
|
2590
|
-
};
|
|
2591
|
-
DomContentHandler.prototype._getParentDetails = function (element, elementContent, dataTagPrefix, aiBlobAttributeTag) {
|
|
2592
|
-
var parentId = elementContent["parentid"];
|
|
2593
|
-
var parentName = elementContent["parentname"];
|
|
2594
|
-
var parentInfo = {};
|
|
2595
|
-
if (parentId || parentName || !element) {
|
|
2596
|
-
return parentInfo;
|
|
2597
|
-
}
|
|
2598
|
-
return this._populateParentInfo(element, dataTagPrefix, aiBlobAttributeTag);
|
|
2599
|
-
};
|
|
2600
|
-
DomContentHandler.prototype._populateParentInfo = function (element, dataTagPrefix, aiBlobAttributeTag) {
|
|
2601
|
-
var parentInfo = {};
|
|
2602
|
-
var parentId;
|
|
2603
|
-
var closestParentElement = walkUpDomChainWithElementValidation(element.parentElement, this._isTracked, dataTagPrefix);
|
|
2604
|
-
if (closestParentElement) {
|
|
2605
|
-
var dataAttr = closestParentElement.getAttribute(aiBlobAttributeTag) || element[aiBlobAttributeTag];
|
|
2606
|
-
if (dataAttr) {
|
|
2607
|
-
try {
|
|
2608
|
-
var telemetryObject = JSON.parse(dataAttr);
|
|
2652
|
+
function _populateElementContent(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
|
|
2653
|
+
var elementContent = {};
|
|
2654
|
+
if (!element) {
|
|
2655
|
+
return elementContent;
|
|
2609
2656
|
}
|
|
2610
|
-
|
|
2611
|
-
|
|
2657
|
+
var htmlContent = _getHtmlIdAndContentName(element);
|
|
2658
|
+
elementContent = {
|
|
2659
|
+
id: htmlContent.id || "",
|
|
2660
|
+
contentName: htmlContent.contentName || ""
|
|
2661
|
+
};
|
|
2662
|
+
if (isValueAssigned(parentDataTagPrefix)) {
|
|
2663
|
+
_walkUpDomChainCaptureData(element, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag);
|
|
2612
2664
|
}
|
|
2613
|
-
if (
|
|
2614
|
-
|
|
2665
|
+
if (!elementContent.id && !elementContent.contentName) {
|
|
2666
|
+
_traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Invalid content blob. Missing required attributes (id, contentName. " +
|
|
2667
|
+
" Content information will still be collected!");
|
|
2615
2668
|
}
|
|
2669
|
+
return elementContent;
|
|
2616
2670
|
}
|
|
2617
|
-
|
|
2618
|
-
|
|
2671
|
+
function _populateElementContentwithDataTag(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
|
|
2672
|
+
var dataTags = (_self._config || {}).dataTags;
|
|
2673
|
+
var elementContent = {};
|
|
2674
|
+
if (!element) {
|
|
2675
|
+
return elementContent;
|
|
2676
|
+
}
|
|
2677
|
+
var htmlContent = _getHtmlIdAndContentName(element);
|
|
2678
|
+
if (isValueAssigned(parentDataTagPrefix)) {
|
|
2679
|
+
_walkUpDomChainCaptureData(element, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag);
|
|
2680
|
+
}
|
|
2681
|
+
else {
|
|
2682
|
+
_captureElementContentWithDataTag(element, elementContent, dataTagPrefix);
|
|
2683
|
+
}
|
|
2684
|
+
if (dataTags.useDefaultContentNameOrId) {
|
|
2685
|
+
if (!isValueAssigned(elementContent.id)) {
|
|
2686
|
+
elementContent.id = htmlContent.id || "";
|
|
2687
|
+
}
|
|
2688
|
+
elementContent.contentName = htmlContent.contentName || "";
|
|
2689
|
+
}
|
|
2690
|
+
if (!elementContent.id && !elementContent.contentName) {
|
|
2691
|
+
_traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Invalid content blob. Missing required attributes (id, contentName. " +
|
|
2692
|
+
" Content information will still be collected!");
|
|
2693
|
+
}
|
|
2694
|
+
return elementContent;
|
|
2695
|
+
}
|
|
2696
|
+
function _getMetaDataFromDOM(captureAllMetaDataContent, prefix, removePrefix) {
|
|
2697
|
+
var metaElements;
|
|
2698
|
+
var metaData = {};
|
|
2699
|
+
if (hasDocument) {
|
|
2700
|
+
metaElements = document.querySelectorAll("meta");
|
|
2701
|
+
for (var i = 0; i < metaElements.length; i++) {
|
|
2702
|
+
var meta = metaElements[i];
|
|
2703
|
+
if (meta.name) {
|
|
2704
|
+
if (captureAllMetaDataContent || meta.name.indexOf(prefix) === 0) {
|
|
2705
|
+
var name_1 = removePrefix ? meta.name.replace(prefix, "") : meta.name;
|
|
2706
|
+
metaData[name_1] = meta.content;
|
|
2707
|
+
}
|
|
2708
|
+
}
|
|
2709
|
+
}
|
|
2710
|
+
}
|
|
2711
|
+
return metaData;
|
|
2712
|
+
}
|
|
2713
|
+
function _getDefaultContentName(element, useDefaultContentName) {
|
|
2714
|
+
if (useDefaultContentName === false || !element.tagName) {
|
|
2715
|
+
return "";
|
|
2716
|
+
}
|
|
2717
|
+
var doc = getDocument() || {};
|
|
2718
|
+
var contentName;
|
|
2719
|
+
switch (element.tagName) {
|
|
2720
|
+
case "A":
|
|
2721
|
+
contentName = doc.all ? element.innerText || element.innerHTML : element.text || element.innerHTML;
|
|
2722
|
+
break;
|
|
2723
|
+
case "IMG":
|
|
2724
|
+
case "AREA":
|
|
2725
|
+
contentName = element.alt;
|
|
2726
|
+
break;
|
|
2727
|
+
default:
|
|
2728
|
+
contentName = element.value || element.name || element.alt || element.innerText || element.id;
|
|
2729
|
+
}
|
|
2730
|
+
return contentName.substring(0, MAX_CONTENTNAME_LENGTH);
|
|
2731
|
+
}
|
|
2732
|
+
function _isTracked(element, dataTag, aiBlobAttributeTag) {
|
|
2733
|
+
var attrs = element.attributes;
|
|
2734
|
+
var dataTagFound = false;
|
|
2735
|
+
for (var i = 0; i < attrs.length; i++) {
|
|
2736
|
+
var attributeName = attrs[i].name;
|
|
2737
|
+
if (attributeName === aiBlobAttributeTag) {
|
|
2738
|
+
return false;
|
|
2739
|
+
}
|
|
2740
|
+
else if (attributeName.indexOf(dataTag) === 0) {
|
|
2741
|
+
dataTagFound = true;
|
|
2742
|
+
}
|
|
2743
|
+
}
|
|
2744
|
+
return dataTagFound;
|
|
2745
|
+
}
|
|
2746
|
+
function _getHtmlIdAndContentName(element) {
|
|
2747
|
+
var dataTags = (_self._config || {}).dataTags;
|
|
2748
|
+
var callback = (_self._config || {}).callback;
|
|
2749
|
+
var htmlContent = {};
|
|
2750
|
+
if (!element) {
|
|
2751
|
+
return htmlContent;
|
|
2752
|
+
}
|
|
2753
|
+
if (dataTags.useDefaultContentNameOrId) {
|
|
2754
|
+
var customizedContentName = callback.contentName ? callback.contentName(element, dataTags.useDefaultContentNameOrId) : "";
|
|
2755
|
+
var defaultContentName = _getDefaultContentName(element, dataTags.useDefaultContentNameOrId);
|
|
2756
|
+
htmlContent = {
|
|
2757
|
+
id: element.id,
|
|
2758
|
+
contentName: customizedContentName || defaultContentName || element.getAttribute("alt")
|
|
2759
|
+
};
|
|
2760
|
+
}
|
|
2761
|
+
return htmlContent;
|
|
2762
|
+
}
|
|
2763
|
+
function _getParentDetails(element, elementContent, dataTagPrefix, aiBlobAttributeTag) {
|
|
2764
|
+
var parentId = elementContent["parentid"];
|
|
2765
|
+
var parentName = elementContent["parentname"];
|
|
2766
|
+
var parentInfo = {};
|
|
2767
|
+
if (parentId || parentName || !element) {
|
|
2768
|
+
return parentInfo;
|
|
2769
|
+
}
|
|
2770
|
+
return _populateParentInfo(element, dataTagPrefix, aiBlobAttributeTag);
|
|
2771
|
+
}
|
|
2772
|
+
function _populateParentInfo(element, dataTagPrefix, aiBlobAttributeTag) {
|
|
2773
|
+
var parentInfo = {};
|
|
2774
|
+
var parentId;
|
|
2775
|
+
var closestParentElement = walkUpDomChainWithElementValidation(element.parentElement, _isTracked, dataTagPrefix);
|
|
2776
|
+
if (closestParentElement) {
|
|
2777
|
+
var dataAttr = closestParentElement.getAttribute(aiBlobAttributeTag) || element[aiBlobAttributeTag];
|
|
2778
|
+
if (dataAttr) {
|
|
2779
|
+
try {
|
|
2780
|
+
var telemetryObject = JSON.parse(dataAttr);
|
|
2781
|
+
}
|
|
2782
|
+
catch (e) {
|
|
2783
|
+
_traceLogger.throwInternal(LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.CannotParseAiBlobValue, "Can not parse " + dataAttr);
|
|
2784
|
+
}
|
|
2785
|
+
if (telemetryObject) {
|
|
2786
|
+
parentId = telemetryObject.id;
|
|
2787
|
+
}
|
|
2788
|
+
}
|
|
2789
|
+
else {
|
|
2790
|
+
parentId = closestParentElement.getAttribute(dataTagPrefix + "id");
|
|
2791
|
+
}
|
|
2792
|
+
}
|
|
2793
|
+
if (parentId) {
|
|
2794
|
+
parentInfo["parentid"] = parentId;
|
|
2795
|
+
}
|
|
2796
|
+
else {
|
|
2797
|
+
var htmlContent = _getHtmlIdAndContentName(element.parentElement);
|
|
2798
|
+
parentInfo["parentid"] = htmlContent.id;
|
|
2799
|
+
parentInfo["parentname"] = htmlContent.contentName;
|
|
2800
|
+
}
|
|
2801
|
+
return parentInfo;
|
|
2619
2802
|
}
|
|
2620
|
-
}
|
|
2621
|
-
|
|
2622
|
-
parentInfo["parentid"] = parentId;
|
|
2623
|
-
}
|
|
2624
|
-
else {
|
|
2625
|
-
var htmlContent = this._getHtmlIdAndContentName(element.parentElement);
|
|
2626
|
-
parentInfo["parentid"] = htmlContent.id;
|
|
2627
|
-
parentInfo["parentname"] = htmlContent.contentName;
|
|
2628
|
-
}
|
|
2629
|
-
return parentInfo;
|
|
2630
|
-
};
|
|
2803
|
+
});
|
|
2804
|
+
}
|
|
2631
2805
|
return DomContentHandler;
|
|
2632
2806
|
}());
|
|
2633
2807
|
|
|
2634
2808
|
var ClickAnalyticsPlugin = /** @class */ (function (_super) {
|
|
2635
2809
|
__extendsFn(ClickAnalyticsPlugin, _super);
|
|
2636
2810
|
function ClickAnalyticsPlugin() {
|
|
2637
|
-
var _this = _super
|
|
2811
|
+
var _this = _super.call(this) || this;
|
|
2638
2812
|
_this.identifier = "ClickAnalyticsPlugin";
|
|
2639
2813
|
_this.priority = 181;
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2814
|
+
var _config;
|
|
2815
|
+
var _pageAction;
|
|
2816
|
+
var _autoCaptureHandler;
|
|
2817
|
+
var _contentHandler;
|
|
2818
|
+
dynamicProto(ClickAnalyticsPlugin, _this, function (_self, _base) {
|
|
2819
|
+
var _identifier = _self.identifier;
|
|
2820
|
+
_initDefaults();
|
|
2821
|
+
_self.initialize = function (config, core, extensions, pluginChain) {
|
|
2822
|
+
if (isNullOrUndefined(core)) {
|
|
2823
|
+
throwError("Error initializing");
|
|
2824
|
+
}
|
|
2825
|
+
config.extensionConfig = config.extensionConfig || [];
|
|
2826
|
+
config.extensionConfig[_identifier] = config.extensionConfig[_identifier] || {};
|
|
2827
|
+
_config = mergeConfig(config.extensionConfig[_identifier]);
|
|
2828
|
+
_super.prototype.initialize.call(_this, config, core, extensions, pluginChain);
|
|
2829
|
+
var logger = _self.diagLog();
|
|
2830
|
+
_contentHandler = _contentHandler ? _contentHandler : new DomContentHandler(_config, logger);
|
|
2831
|
+
var metaTags = _contentHandler.getMetadata();
|
|
2832
|
+
_pageAction = new PageAction(_this, _config, _contentHandler, _config.callback.pageActionPageTags, metaTags, logger);
|
|
2833
|
+
_autoCaptureHandler = _autoCaptureHandler ? _autoCaptureHandler : new AutoCaptureHandler(_self, _config, _pageAction, logger);
|
|
2834
|
+
if (_config.autoCapture) {
|
|
2835
|
+
_autoCaptureHandler.click();
|
|
2836
|
+
}
|
|
2837
|
+
var _propertiesExtension;
|
|
2838
|
+
arrForEach(extensions, function (extension) {
|
|
2839
|
+
if (extension.identifier === PropertiesPluginIdentifier) {
|
|
2840
|
+
_propertiesExtension = extension;
|
|
2841
|
+
}
|
|
2842
|
+
});
|
|
2843
|
+
if (_propertiesExtension && _propertiesExtension.context &&
|
|
2844
|
+
_propertiesExtension.context.internal && _propertiesExtension.context.internal.sdkVersion) {
|
|
2845
|
+
_propertiesExtension.context.internal.sdkVersion += "_ClickPlugin" + ClickAnalyticsPlugin.Version;
|
|
2846
|
+
}
|
|
2847
|
+
};
|
|
2848
|
+
_self.processTelemetry = function (env, itemCtx) {
|
|
2849
|
+
_self.processNext(env, itemCtx);
|
|
2850
|
+
};
|
|
2851
|
+
_self.trackPageAction = function (pageAction, customProperties) {
|
|
2852
|
+
try {
|
|
2853
|
+
_pageAction.trackPageAction(pageAction, customProperties);
|
|
2854
|
+
}
|
|
2855
|
+
catch (e) {
|
|
2856
|
+
_throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.TrackPageActionEventFailed, "trackPageAction failed, page action event will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
|
|
2857
|
+
}
|
|
2858
|
+
};
|
|
2859
|
+
_self._doTeardown = function (unloadCtx, unloadState, asyncCallback) {
|
|
2860
|
+
return unloadComponents([
|
|
2861
|
+
_autoCaptureHandler,
|
|
2862
|
+
_contentHandler,
|
|
2863
|
+
_pageAction
|
|
2864
|
+
], unloadCtx, unloadState);
|
|
2865
|
+
};
|
|
2662
2866
|
});
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
ClickAnalyticsPlugin.prototype.processTelemetry = function (env, itemCtx) {
|
|
2669
|
-
this.processNext(env, itemCtx);
|
|
2670
|
-
};
|
|
2671
|
-
ClickAnalyticsPlugin.prototype.trackPageAction = function (pageAction, customProperties) {
|
|
2672
|
-
try {
|
|
2673
|
-
this.pageAction.trackPageAction(pageAction, customProperties);
|
|
2674
|
-
}
|
|
2675
|
-
catch (e) {
|
|
2676
|
-
this.diagLog().throwInternal(LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.TrackPageActionEventFailed, "trackPageAction failed, page action event will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
|
|
2867
|
+
function _initDefaults() {
|
|
2868
|
+
_config = null;
|
|
2869
|
+
_pageAction = null;
|
|
2870
|
+
_autoCaptureHandler = null;
|
|
2871
|
+
_contentHandler = null;
|
|
2677
2872
|
}
|
|
2678
|
-
|
|
2679
|
-
|
|
2873
|
+
return _this;
|
|
2874
|
+
}
|
|
2875
|
+
ClickAnalyticsPlugin.Version = "2.8.0-beta.2203-11";
|
|
2680
2876
|
return ClickAnalyticsPlugin;
|
|
2681
2877
|
}(BaseTelemetryPlugin));
|
|
2682
2878
|
|